{
  "description": "Output is the schema for namespace level output API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "OutputSpec defines the desired state of ClusterOutput",
      "properties": {
        "alias": {
          "description": "A user friendly alias name for this output plugin.\nUsed in metrics for distinction of each configured output.",
          "type": "string"
        },
        "azureBlob": {
          "description": "AzureBlob defines AzureBlob Output Configuration",
          "properties": {
            "accountName": {
              "description": "Azure Storage account name",
              "type": "string"
            },
            "autoCreateContainer": {
              "description": "Creates container if ContainerName is not set.",
              "enum": [
                "on",
                "off"
              ],
              "type": "string"
            },
            "blobType": {
              "description": "Specify the desired blob type. Must be `appendblob` or `blockblob`",
              "enum": [
                "appendblob",
                "blockblob"
              ],
              "type": "string"
            },
            "containerName": {
              "description": "Name of the container that will contain the blobs",
              "type": "string"
            },
            "emulatorMode": {
              "description": "Optional toggle to use an Azure emulator",
              "enum": [
                "on",
                "off"
              ],
              "type": "string"
            },
            "endpoint": {
              "description": "HTTP Service of the endpoint (if using EmulatorMode)",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "path": {
              "description": "Optional path to store the blobs.",
              "type": "string"
            },
            "sharedKey": {
              "description": "Specify the Azure Storage Shared Key to authenticate against the storage account",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tls": {
              "description": "Enable/Disable TLS Encryption. Azure services require TLS to be enabled.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "accountName",
            "containerName",
            "sharedKey"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "azureLogAnalytics": {
          "description": "AzureLogAnalytics defines AzureLogAnalytics Output Configuration",
          "properties": {
            "customerID": {
              "description": "Customer ID or Workspace ID",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "logType": {
              "description": "Name of the event type.",
              "type": "string"
            },
            "logTypeKey": {
              "description": "Set a record key that will populate 'logtype'. If the key is found, it will have precedence",
              "type": "string"
            },
            "sharedKey": {
              "description": "Specify the primary or the secondary client authentication key",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "timeGenerated": {
              "description": "If set, overrides the timeKey value with the `time-generated-field` HTTP header value.",
              "type": "boolean"
            },
            "timeKey": {
              "description": "Specify the name of the key where the timestamp is stored.",
              "type": "string"
            }
          },
          "required": [
            "customerID",
            "sharedKey"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "cloudWatch": {
          "description": "CloudWatch defines CloudWatch Output Configuration",
          "properties": {
            "autoCreateGroup": {
              "description": "Automatically create the log group. Defaults to False.",
              "type": "boolean"
            },
            "autoRetryRequests": {
              "description": "Automatically retry failed requests to CloudWatch once. Defaults to True.",
              "type": "boolean"
            },
            "endpoint": {
              "description": "Custom endpoint for CloudWatch logs API",
              "type": "string"
            },
            "externalID": {
              "description": "Specify an external ID for the STS API.",
              "type": "string"
            },
            "logFormat": {
              "description": "Optional parameter to tell CloudWatch the format of the data",
              "type": "string"
            },
            "logGroupName": {
              "description": "Name of Cloudwatch Log Group to send log records to",
              "type": "string"
            },
            "logGroupTemplate": {
              "description": "Template for Log Group name, overrides LogGroupName if set.",
              "type": "string"
            },
            "logKey": {
              "description": "If set, only the value of the key will be sent to CloudWatch",
              "type": "string"
            },
            "logRetentionDays": {
              "description": "Number of days logs are retained for",
              "enum": [
                1,
                3,
                5,
                7,
                14,
                30,
                60,
                90,
                120,
                150,
                180,
                365,
                400,
                545,
                731,
                1827,
                3653
              ],
              "format": "int32",
              "type": "integer"
            },
            "logStreamName": {
              "description": "The name of the CloudWatch Log Stream to send log records to",
              "type": "string"
            },
            "logStreamPrefix": {
              "description": "Prefix for the Log Stream name. Not compatible with LogStreamName setting",
              "type": "string"
            },
            "logStreamTemplate": {
              "description": "Template for Log Stream name. Overrides LogStreamPrefix and LogStreamName if set.",
              "type": "string"
            },
            "metricDimensions": {
              "description": "Optional lists of lists for dimension keys to be added to all metrics. Use comma separated strings\nfor one list of dimensions and semicolon separated strings for list of lists dimensions.",
              "type": "string"
            },
            "metricNamespace": {
              "description": "Optional string to represent the CloudWatch namespace.",
              "type": "string"
            },
            "region": {
              "description": "AWS Region",
              "type": "string"
            },
            "roleArn": {
              "description": "Role ARN to use for cross-account access",
              "type": "string"
            },
            "stsEndpoint": {
              "description": "Specify a custom STS endpoint for the AWS STS API",
              "type": "string"
            }
          },
          "required": [
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "customPlugin": {
          "description": "CustomPlugin defines Custom Output configuration.",
          "properties": {
            "config": {
              "description": "Config holds any unsupported plugins classic configurations,\nif ConfigFileFormat is set to yaml, this filed will be ignored",
              "type": "string"
            },
            "yamlConfig": {
              "description": "YamlConfig holds the unsupported plugins yaml configurations, it only works when the ConfigFileFormat is yaml",
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "datadog": {
          "description": "DataDog defines DataDog Output configuration.",
          "properties": {
            "apikey": {
              "description": "Your Datadog API key.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "compress": {
              "description": "Compress  the payload in GZIP format.\nDatadog supports and recommends setting this to gzip.",
              "type": "string"
            },
            "dd_message_key": {
              "description": "By default, the plugin searches for the key 'log' and remap the value to the key 'message'. If the property is set, the plugin will search the property name key.",
              "type": "string"
            },
            "dd_service": {
              "description": "The human readable name for your service generating the logs.",
              "type": "string"
            },
            "dd_source": {
              "description": "A human readable name for the underlying technology of your service.",
              "type": "string"
            },
            "dd_tags": {
              "description": "The tags you want to assign to your logs in Datadog.",
              "type": "string"
            },
            "host": {
              "description": "Host is the Datadog server where you are sending your logs.",
              "type": "string"
            },
            "include_tag_key": {
              "description": "If enabled, a tag is appended to output. The key name is used tag_key property.",
              "type": "boolean"
            },
            "json_date_key": {
              "description": "Date key name for output.",
              "type": "string"
            },
            "provider": {
              "description": "To activate the remapping, specify configuration flag provider.",
              "type": "string"
            },
            "proxy": {
              "description": "Specify an HTTP Proxy.",
              "type": "string"
            },
            "tag_key": {
              "description": "The key name of tag. If include_tag_key is false, This property is ignored.",
              "type": "string"
            },
            "tls": {
              "description": "TLS controls whether to use end-to-end security communications security protocol.\nDatadog recommends setting this to on.",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "es": {
          "description": "Elasticsearch defines Elasticsearch Output configuration.",
          "properties": {
            "awsAuth": {
              "description": "Enable AWS Sigv4 Authentication for Amazon ElasticSearch Service.",
              "type": "string"
            },
            "awsAuthSecret": {
              "description": "AWSAuthSecret Enable AWS Sigv4 Authentication for Amazon ElasticSearch Service.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "awsExternalID": {
              "description": "External ID for the AWS IAM Role specified with aws_role_arn.",
              "type": "string"
            },
            "awsRegion": {
              "description": "Specify the AWS region for Amazon ElasticSearch Service.",
              "type": "string"
            },
            "awsRoleARN": {
              "description": "AWS IAM Role to assume to put records to your Amazon ES cluster.",
              "type": "string"
            },
            "awsSTSEndpoint": {
              "description": "Specify the custom sts endpoint to be used with STS API for Amazon ElasticSearch Service.",
              "type": "string"
            },
            "bufferSize": {
              "description": "Specify the buffer size used to read the response from the Elasticsearch HTTP service.\nThis option is useful for debugging purposes where is required to read full responses,\nnote that response size grows depending of the number of records inserted.\nTo set an unlimited amount of memory set this value to False,\notherwise the value must be according to the Unit Size specification.",
              "pattern": "^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$",
              "type": "string"
            },
            "cloudAuth": {
              "description": "Specify the credentials to use to connect to Elastic's Elasticsearch Service running on Elastic Cloud.",
              "type": "string"
            },
            "cloudAuthSecret": {
              "description": "CloudAuthSecret Specify the credentials to use to connect to Elastic's Elasticsearch Service running on Elastic Cloud.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "cloudID": {
              "description": "If you are using Elastic's Elasticsearch Service you can specify the cloud_id of the cluster running.",
              "type": "string"
            },
            "compress": {
              "description": "Set payload compression mechanism. Option available is 'gzip'",
              "enum": [
                "gzip"
              ],
              "type": "string"
            },
            "currentTimeIndex": {
              "description": "Use current time for index generation instead of message record",
              "type": "boolean"
            },
            "generateID": {
              "description": "When enabled, generate _id for outgoing records.\nThis prevents duplicate records when retrying ES.",
              "type": "boolean"
            },
            "host": {
              "description": "IP address or hostname of the target Elasticsearch instance",
              "type": "string"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Optional username credential for Elastic X-Pack access",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "idKey": {
              "description": "If set, _id will be the value of the key from incoming record and Generate_ID option is ignored.",
              "type": "string"
            },
            "includeTagKey": {
              "description": "When enabled, it append the Tag name to the record.",
              "type": "boolean"
            },
            "index": {
              "description": "Index name",
              "type": "string"
            },
            "logstashDateFormat": {
              "description": "Time format (based on strftime) to generate the second part of the Index name.",
              "type": "string"
            },
            "logstashFormat": {
              "description": "Enable Logstash format compatibility.\nThis option takes a boolean value: True/False, On/Off",
              "type": "boolean"
            },
            "logstashPrefix": {
              "description": "When Logstash_Format is enabled, the Index name is composed using a prefix and the date,\ne.g: If Logstash_Prefix is equals to 'mydata' your index will become 'mydata-YYYY.MM.DD'.\nThe last string appended belongs to the date when the data is being generated.",
              "type": "string"
            },
            "logstashPrefixKey": {
              "description": "Prefix keys with this string",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "path": {
              "description": "Elasticsearch accepts new data on HTTP query path \"/_bulk\".\nBut it is also possible to serve Elasticsearch behind a reverse proxy on a subpath.\nThis option defines such path on the fluent-bit side.\nIt simply adds a path prefix in the indexing HTTP POST URI.",
              "type": "string"
            },
            "pipeline": {
              "description": "Newer versions of Elasticsearch allows setting up filters called pipelines.\nThis option allows defining which pipeline the database should use.\nFor performance reasons is strongly suggested parsing\nand filtering on Fluent Bit side, avoid pipelines.",
              "type": "string"
            },
            "port": {
              "description": "TCP port of the target Elasticsearch instance",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "replaceDots": {
              "description": "When enabled, replace field name dots with underscore, required by Elasticsearch 2.0-2.3.",
              "type": "boolean"
            },
            "suppressTypeName": {
              "description": "When enabled, mapping types is removed and Type option is ignored. Types are deprecated in APIs in v7.0. This options is for v7.0 or later.",
              "type": "string"
            },
            "tagKey": {
              "description": "When Include_Tag_Key is enabled, this property defines the key name for the tag.",
              "type": "string"
            },
            "timeKey": {
              "description": "When Logstash_Format is enabled, each record will get a new timestamp field.\nThe Time_Key property defines the name of that field.",
              "type": "string"
            },
            "timeKeyFormat": {
              "description": "When Logstash_Format is enabled, this property defines the format of the timestamp.",
              "type": "string"
            },
            "timeKeyNanos": {
              "description": "When Logstash_Format is enabled, enabling this property sends nanosecond precision timestamps.",
              "type": "boolean"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "totalLimitSize": {
              "description": "Limit the maximum number of Chunks in the filesystem for the current output logical destination.",
              "type": "string"
            },
            "traceError": {
              "description": "When enabled print the elasticsearch API calls to stdout when elasticsearch returns an error",
              "type": "boolean"
            },
            "traceOutput": {
              "description": "When enabled print the elasticsearch API calls to stdout (for diag only)",
              "type": "boolean"
            },
            "type": {
              "description": "Type name",
              "type": "string"
            },
            "writeOperation": {
              "description": "Operation to use to write in bulk requests.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "file": {
          "description": "File defines File Output configuration.",
          "properties": {
            "delimiter": {
              "description": "The character to separate each pair. Applicable only if format is csv or ltsv.",
              "type": "string"
            },
            "file": {
              "description": "Set file name to store the records. If not set, the file name will be the tag associated with the records.",
              "type": "string"
            },
            "format": {
              "description": "The format of the file content. See also Format section. Default: out_file.",
              "enum": [
                "out_file",
                "plain",
                "csv",
                "ltsv",
                "template"
              ],
              "type": "string"
            },
            "labelDelimiter": {
              "description": "The character to separate each pair. Applicable only if format is ltsv.",
              "type": "string"
            },
            "path": {
              "description": "Absolute directory path to store files. If not set, Fluent Bit will write the files on it's own positioned directory.",
              "type": "string"
            },
            "template": {
              "description": "The format string. Applicable only if format is template.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "firehose": {
          "description": "Firehose defines Firehose Output configuration.",
          "properties": {
            "autoRetryRequests": {
              "description": "Immediately retry failed requests to AWS services once. This option does not affect the normal Fluent Bit retry mechanism with backoff. Instead, it enables an immediate retry with no delay for networking errors, which may help improve throughput when there are transient/random networking issues.",
              "type": "boolean"
            },
            "dataKeys": {
              "description": "By default, the whole log record will be sent to Kinesis. If you specify a key name(s) with this option, then only those keys and values will be sent to Kinesis. For example, if you are using the Fluentd Docker log driver, you can specify data_keys log and only the log message will be sent to Kinesis. If you specify multiple keys, they should be comma delimited.",
              "type": "string"
            },
            "deliveryStream": {
              "description": "The name of the Kinesis Firehose Delivery stream that you want log records sent to.",
              "type": "string"
            },
            "endpoint": {
              "description": "Specify a custom endpoint for the Kinesis Firehose API.",
              "type": "string"
            },
            "logKey": {
              "description": "By default, the whole log record will be sent to Firehose. If you specify a key name with this option, then only the value of that key will be sent to Firehose. For example, if you are using the Fluentd Docker log driver, you can specify log_key log and only the log message will be sent to Firehose.",
              "type": "string"
            },
            "region": {
              "description": "The AWS region.",
              "type": "string"
            },
            "roleARN": {
              "description": "ARN of an IAM role to assume (for cross account access).",
              "type": "string"
            },
            "stsEndpoint": {
              "description": "Specify a custom endpoint for the STS API; used to assume your custom role provided with role_arn.",
              "type": "string"
            },
            "timeKey": {
              "description": "Add the timestamp to the record under this key. By default, the timestamp from Fluent Bit will not be added to records sent to Kinesis.",
              "type": "string"
            },
            "timeKeyFormat": {
              "description": "strftime compliant format string for the timestamp; for example, %Y-%m-%dT%H *string This option is used with time_key. You can also use %L for milliseconds and %f for microseconds. If you are using ECS FireLens, make sure you are running Amazon ECS Container Agent v1.42.0 or later, otherwise the timestamps associated with your container logs will only have second precision.",
              "type": "string"
            }
          },
          "required": [
            "deliveryStream",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "forward": {
          "description": "Forward defines Forward Output configuration.",
          "properties": {
            "emptySharedKey": {
              "description": "Use this option to connect to Fluentd with a zero-length secret.",
              "type": "boolean"
            },
            "host": {
              "description": "Target host where Fluent-Bit or Fluentd are listening for Forward messages.",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "password": {
              "description": "Specify the password corresponding to the username.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP Port of the target service.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "requireAckResponse": {
              "description": "Send \"chunk\"-option and wait for \"ack\" response from server.\nEnables at-least-once and receiving server can control rate of traffic.\n(Requires Fluentd v0.14.0+ server)",
              "type": "boolean"
            },
            "selfHostname": {
              "description": "Default value of the auto-generated certificate common name (CN).",
              "type": "string"
            },
            "sendOptions": {
              "description": "Always send options (with \"size\"=count of messages)",
              "type": "boolean"
            },
            "sharedKey": {
              "description": "A key string known by the remote Fluentd used for authorization.",
              "type": "string"
            },
            "tag": {
              "description": "Overwrite the tag as we transmit. This allows the receiving pipeline start\nfresh, or to attribute source.",
              "type": "string"
            },
            "timeAsInteger": {
              "description": "Set timestamps in integer format, it enable compatibility mode for Fluentd v0.12 series.",
              "type": "boolean"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "username": {
              "description": "Specify the username to present to a Fluentd server that enables user_auth.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gelf": {
          "description": "Gelf defines GELF Output configuration.",
          "properties": {
            "compress": {
              "description": "If transport protocol is udp, it defines if UDP packets should be compressed.",
              "type": "boolean"
            },
            "fullMessageKey": {
              "description": "FullMessageKey is the key to use as the long message that can i.e. contain a backtrace.",
              "type": "string"
            },
            "host": {
              "description": "IP address or hostname of the target Graylog server.",
              "type": "string"
            },
            "hostKey": {
              "description": "HostKey is the key which its value is used as the name of the host, source or application that sent this message.",
              "type": "string"
            },
            "levelKey": {
              "description": "LevelKey is the key to be used as the log level.",
              "type": "string"
            },
            "mode": {
              "description": "The protocol to use (tls, tcp or udp).",
              "enum": [
                "tls",
                "tcp",
                "udp"
              ],
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "packetSize": {
              "description": "If transport protocol is udp, it sets the size of packets to be sent.",
              "format": "int32",
              "type": "integer"
            },
            "port": {
              "description": "The port that the target Graylog server is listening on.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "shortMessageKey": {
              "description": "ShortMessageKey is the key to use as the short message.",
              "type": "string"
            },
            "timestampKey": {
              "description": "TimestampKey is the key which its value is used as the timestamp of the message.",
              "type": "string"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "http": {
          "description": "HTTP defines HTTP Output configuration.",
          "properties": {
            "allowDuplicatedHeaders": {
              "description": "Specify if duplicated headers are allowed.\nIf a duplicated header is found, the latest key/value set is preserved.",
              "type": "boolean"
            },
            "compress": {
              "description": "Set payload compression mechanism. Option available is 'gzip'",
              "type": "string"
            },
            "format": {
              "description": "Specify the data format to be used in the HTTP request body, by default it uses msgpack.\nOther supported formats are json, json_stream and json_lines and gelf.",
              "enum": [
                "msgpack",
                "json",
                "json_stream",
                "json_lines",
                "gelf"
              ],
              "type": "string"
            },
            "gelfFullMessageKey": {
              "description": "Specify the key to use for the full message in gelf format",
              "type": "string"
            },
            "gelfHostKey": {
              "description": "Specify the key to use for the host in gelf format",
              "type": "string"
            },
            "gelfLevelKey": {
              "description": "Specify the key to use for the level in gelf format",
              "type": "string"
            },
            "gelfShortMessageKey": {
              "description": "Specify the key to use as the short message in gelf format",
              "type": "string"
            },
            "gelfTimestampKey": {
              "description": "Specify the key to use for timestamp in gelf format",
              "type": "string"
            },
            "headerTag": {
              "description": "Specify an optional HTTP header field for the original message tag.",
              "type": "string"
            },
            "headers": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Add a HTTP header key/value pair. Multiple headers can be set.",
              "type": "object"
            },
            "host": {
              "description": "IP address or hostname of the target HTTP Server",
              "type": "string"
            },
            "httpPassword": {
              "description": "Basic Auth Password. Requires HTTP_User to be set",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Basic Auth Username",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "jsonDateFormat": {
              "description": "Specify the format of the date. Supported formats are double, epoch\nand iso8601 (eg: 2018-05-30T09:39:52.000681Z)",
              "type": "string"
            },
            "jsonDateKey": {
              "description": "Specify the name of the time key in the output record.\nTo disable the time key just set the value to false.",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP port of the target HTTP Server",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "proxy": {
              "description": "Specify an HTTP Proxy. The expected format of this value is http://host:port.\nNote that https is not supported yet.",
              "type": "string"
            },
            "tls": {
              "description": "HTTP output plugin supports TTL/SSL, for more details about the properties available\nand general configuration, please refer to the TLS/SSL section.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "uri": {
              "description": "Specify an optional HTTP URI for the target web server, e.g: /something",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "influxDB": {
          "description": "InfluxDB defines InfluxDB Output configuration.",
          "properties": {
            "autoTags": {
              "description": "Automatically tag keys where value is string.",
              "type": "boolean"
            },
            "bucket": {
              "description": "InfluxDB bucket name where records will be inserted - if specified, database is ignored and v2 of API is used",
              "type": "string"
            },
            "database": {
              "description": "InfluxDB database name where records will be inserted.",
              "type": "string"
            },
            "host": {
              "description": "IP address or hostname of the target InfluxDB service.",
              "type": "string"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpToken": {
              "description": "Authentication token used with InfluxDB v2 - if specified, both HTTPUser and HTTPPasswd are ignored",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Optional username for HTTP Basic Authentication",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "org": {
              "description": "InfluxDB organization name where the bucket is (v2 only)",
              "type": "string"
            },
            "port": {
              "description": "TCP port of the target InfluxDB service.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "sequenceTag": {
              "description": "The name of the tag whose value is incremented for the consecutive simultaneous events.",
              "type": "string"
            },
            "tagKeys": {
              "description": "List of keys that needs to be tagged",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "tagListKey": {
              "description": "Key of the string array optionally contained within each log record that contains tag keys for that record",
              "type": "string"
            },
            "tagsListEnabled": {
              "description": "Dynamically tag keys which are in the string array at Tags_List_Key key.",
              "type": "boolean"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "host"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "kafka": {
          "description": "Kafka defines Kafka Output configuration.",
          "properties": {
            "brokers": {
              "description": "Single of multiple list of Kafka Brokers, e.g: 192.168.1.3:9092, 192.168.1.4:9092.",
              "type": "string"
            },
            "dynamicTopic": {
              "description": "adds unknown topics (found in Topic_Key) to Topics. So in Topics only a default topic needs to be configured",
              "type": "boolean"
            },
            "format": {
              "description": "Specify data format, options available: json, msgpack.",
              "type": "string"
            },
            "messageKey": {
              "description": "Optional key to store the message",
              "type": "string"
            },
            "messageKeyField": {
              "description": "If set, the value of Message_Key_Field in the record will indicate the message key.\nIf not set nor found in the record, Message_Key will be used (if set).",
              "type": "string"
            },
            "queueFullRetries": {
              "description": "Fluent Bit queues data into rdkafka library,\nif for some reason the underlying library cannot flush the records the queue might fills up blocking new addition of records.\nThe queue_full_retries option set the number of local retries to enqueue the data.\nThe default value is 10 times, the interval between each retry is 1 second.\nSetting the queue_full_retries value to 0 set's an unlimited number of retries.",
              "format": "int64",
              "type": "integer"
            },
            "rdkafka": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "{property} can be any librdkafka properties",
              "type": "object"
            },
            "timestampFormat": {
              "description": "iso8601 or double",
              "type": "string"
            },
            "timestampKey": {
              "description": "Set the key to store the record timestamp",
              "type": "string"
            },
            "topicKey": {
              "description": "If multiple Topics exists, the value of Topic_Key in the record will indicate the topic to use.\nE.g: if Topic_Key is router and the record is {\"key1\": 123, \"router\": \"route_2\"},\nFluent Bit will use topic route_2. Note that if the value of Topic_Key is not present in Topics,\nthen by default the first topic in the Topics list will indicate the topic to be used.",
              "type": "string"
            },
            "topics": {
              "description": "Single entry or list of topics separated by comma (,) that Fluent Bit will use to send messages to Kafka.\nIf only one topic is set, that one will be used for all records.\nInstead if multiple topics exists, the one set in the record by Topic_Key will be used.",
              "type": "string"
            },
            "totalLimitSize": {
              "description": "Limit the maximum number of Chunks in the filesystem for the current output logical destination.",
              "type": "string"
            },
            "workers": {
              "description": "Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0.",
              "format": "int32",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "kinesis": {
          "description": "Kinesis defines Kinesis Output configuration.",
          "properties": {
            "autoRetryRequests": {
              "description": "Immediately retry failed requests to AWS services once. This option does not affect the normal Fluent Bit retry mechanism with backoff. Instead, it enables an immediate retry with no delay for networking errors, which may help improve throughput when there are transient/random networking issues. This option defaults to true.",
              "type": "boolean"
            },
            "endpoint": {
              "description": "Specify a custom endpoint for the Kinesis API.",
              "type": "string"
            },
            "externalID": {
              "description": "Specify an external ID for the STS API, can be used with the role_arn parameter if your role requires an external ID.",
              "type": "string"
            },
            "logKey": {
              "description": "By default, the whole log record will be sent to Kinesis. If you specify a key name with this option, then only the value of that key will be sent to Kinesis. For example, if you are using the Fluentd Docker log driver, you can specify log_key log and only the log message will be sent to Kinesis.",
              "type": "string"
            },
            "region": {
              "description": "The AWS region.",
              "type": "string"
            },
            "roleARN": {
              "description": "ARN of an IAM role to assume (for cross account access).",
              "type": "string"
            },
            "stream": {
              "description": "The name of the Kinesis Streams Delivery stream that you want log records sent to.",
              "type": "string"
            },
            "stsEndpoint": {
              "description": "Custom endpoint for the STS API.",
              "type": "string"
            },
            "timeKey": {
              "description": "Add the timestamp to the record under this key. By default the timestamp from Fluent Bit will not be added to records sent to Kinesis.",
              "type": "string"
            },
            "timeKeyFormat": {
              "description": "strftime compliant format string for the timestamp; for example, the default is '%Y-%m-%dT%H:%M:%S'. Supports millisecond precision with '%3N' and supports nanosecond precision with '%9N' and '%L'; for example, adding '%3N' to support millisecond '%Y-%m-%dT%H:%M:%S.%3N'. This option is used with time_key.",
              "type": "string"
            }
          },
          "required": [
            "region",
            "stream"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "logLevel": {
          "description": "Set the plugin's logging verbosity level. Allowed values are: off, error, warn, info, debug and trace, Defaults to the SERVICE section's Log_Level",
          "enum": [
            "off",
            "error",
            "warning",
            "info",
            "debug",
            "trace"
          ],
          "type": "string"
        },
        "loki": {
          "description": "Loki defines Loki Output configuration.",
          "properties": {
            "autoKubernetesLabels": {
              "description": "If set to true, it will add all Kubernetes labels to the Stream labels.",
              "enum": [
                "on",
                "off"
              ],
              "type": "string"
            },
            "bearerToken": {
              "description": "Set bearer token authentication token value.\nCan be used as alterntative to HTTP basic authentication",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "dropSingleKey": {
              "description": "If set to true and after extracting labels only a single key remains, the log line sent to Loki will be the value of that key in line_format.",
              "enum": [
                "on",
                "off"
              ],
              "type": "string"
            },
            "host": {
              "description": "Loki hostname or IP address.",
              "type": "string"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User\nSet HTTP basic authentication password",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Set HTTP basic authentication user name.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "labelKeys": {
              "description": "Optional list of record keys that will be placed as stream labels.\nThis configuration property is for records key only.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "labelMapPath": {
              "description": "Specify the label map file path. The file defines how to extract labels from each record.",
              "type": "string"
            },
            "labels": {
              "description": "Stream labels for API request. It can be multiple comma separated of strings specifying  key=value pairs.\nIn addition to fixed parameters, it also allows to add custom record keys (similar to label_keys property).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "lineFormat": {
              "description": "Format to use when flattening the record to a log line. Valid values are json or key_value.\nIf set to json,  the log line sent to Loki will be the Fluent Bit record dumped as JSON.\nIf set to key_value, the log line will be each item in the record concatenated together (separated by a single space) in the format.",
              "enum": [
                "json",
                "key_value"
              ],
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "Loki TCP port",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "removeKeys": {
              "description": "Optional list of keys to remove.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "tenantID": {
              "description": "Tenant ID used by default to push logs to Loki.\nIf omitted or empty it assumes Loki is running in single-tenant mode and no X-Scope-OrgID header is sent.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tenantIDKey": {
              "description": "Specify the name of the key from the original record that contains the Tenant ID.\nThe value of the key is set as X-Scope-OrgID of HTTP header. It is useful to set Tenant ID dynamically.",
              "type": "string"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "totalLimitSize": {
              "description": "Limit the maximum number of Chunks in the filesystem for the current output logical destination.",
              "type": "string"
            },
            "uri": {
              "description": "Specify a custom HTTP URI. It must start with forward slash.",
              "type": "string"
            },
            "workers": {
              "description": "Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0.",
              "format": "int32",
              "type": "integer"
            }
          },
          "required": [
            "host"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "match": {
          "description": "A pattern to match against the tags of incoming records.\nIt's case sensitive and support the star (*) character as a wildcard.",
          "type": "string"
        },
        "matchRegex": {
          "description": "A regular expression to match against the tags of incoming records.\nUse this option if you want to use the full regex syntax.",
          "type": "string"
        },
        "null": {
          "description": "Null defines Null Output configuration.",
          "type": "object"
        },
        "opensearch": {
          "description": "OpenSearch defines OpenSearch Output configuration.",
          "properties": {
            "awsAuth": {
              "description": "Enable AWS Sigv4 Authentication for Amazon OpenSearch Service.",
              "type": "string"
            },
            "awsExternalID": {
              "description": "External ID for the AWS IAM Role specified with aws_role_arn.",
              "type": "string"
            },
            "awsRegion": {
              "description": "Specify the AWS region for Amazon OpenSearch Service.",
              "type": "string"
            },
            "awsRoleARN": {
              "description": "AWS IAM Role to assume to put records to your Amazon cluster.",
              "type": "string"
            },
            "awsSTSEndpoint": {
              "description": "Specify the custom sts endpoint to be used with STS API for Amazon OpenSearch Service.",
              "type": "string"
            },
            "bufferSize": {
              "description": "Specify the buffer size used to read the response from the OpenSearch HTTP service.\nThis option is useful for debugging purposes where is required to read full responses,\nnote that response size grows depending of the number of records inserted.\nTo set an unlimited amount of memory set this value to False,\notherwise the value must be according to the Unit Size specification.",
              "pattern": "^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$",
              "type": "string"
            },
            "compress": {
              "enum": [
                "gzip"
              ],
              "type": "string"
            },
            "currentTimeIndex": {
              "description": "Use current time for index generation instead of message record",
              "type": "boolean"
            },
            "generateID": {
              "description": "When enabled, generate _id for outgoing records.\nThis prevents duplicate records when retrying OpenSearch.",
              "type": "boolean"
            },
            "host": {
              "description": "IP address or hostname of the target OpenSearch instance, default `127.0.0.1`",
              "type": "string"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Optional username credential for access",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "idKey": {
              "description": "If set, _id will be the value of the key from incoming record and Generate_ID option is ignored.",
              "type": "string"
            },
            "includeTagKey": {
              "description": "When enabled, it append the Tag name to the record.",
              "type": "boolean"
            },
            "index": {
              "description": "Index name",
              "type": "string"
            },
            "logstashDateFormat": {
              "description": "Time format (based on strftime) to generate the second part of the Index name.",
              "type": "string"
            },
            "logstashFormat": {
              "description": "Enable Logstash format compatibility.\nThis option takes a boolean value: True/False, On/Off",
              "type": "boolean"
            },
            "logstashPrefix": {
              "description": "When Logstash_Format is enabled, the Index name is composed using a prefix and the date,\ne.g: If Logstash_Prefix is equals to 'mydata' your index will become 'mydata-YYYY.MM.DD'.\nThe last string appended belongs to the date when the data is being generated.",
              "type": "string"
            },
            "logstashPrefixKey": {
              "description": "Prefix keys with this string",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "path": {
              "description": "OpenSearch accepts new data on HTTP query path \"/_bulk\".\nBut it is also possible to serve OpenSearch behind a reverse proxy on a subpath.\nThis option defines such path on the fluent-bit side.\nIt simply adds a path prefix in the indexing HTTP POST URI.",
              "type": "string"
            },
            "pipeline": {
              "description": "OpenSearch allows to setup filters called pipelines.\nThis option allows to define which pipeline the database should use.\nFor performance reasons is strongly suggested to do parsing\nand filtering on Fluent Bit side, avoid pipelines.",
              "type": "string"
            },
            "port": {
              "description": "TCP port of the target OpenSearch instance, default `9200`",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "replaceDots": {
              "description": "When enabled, replace field name dots with underscore, required by Elasticsearch 2.0-2.3.",
              "type": "boolean"
            },
            "suppressTypeName": {
              "description": "When enabled, mapping types is removed and Type option is ignored. Types are deprecated in APIs in v7.0. This options is for v7.0 or later.",
              "type": "boolean"
            },
            "tagKey": {
              "description": "When Include_Tag_Key is enabled, this property defines the key name for the tag.",
              "type": "string"
            },
            "timeKey": {
              "description": "When Logstash_Format is enabled, each record will get a new timestamp field.\nThe Time_Key property defines the name of that field.",
              "type": "string"
            },
            "timeKeyFormat": {
              "description": "When Logstash_Format is enabled, this property defines the format of the timestamp.",
              "type": "string"
            },
            "timeKeyNanos": {
              "description": "When Logstash_Format is enabled, enabling this property sends nanosecond precision timestamps.",
              "type": "boolean"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "totalLimitSize": {
              "description": "Limit the maximum number of Chunks in the filesystem for the current output logical destination.",
              "type": "string"
            },
            "traceError": {
              "description": "When enabled print the elasticsearch API calls to stdout when elasticsearch returns an error",
              "type": "boolean"
            },
            "traceOutput": {
              "description": "When enabled print the elasticsearch API calls to stdout (for diag only)",
              "type": "boolean"
            },
            "type": {
              "description": "Type name",
              "type": "string"
            },
            "workers": {
              "description": "Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0.",
              "format": "int32",
              "type": "integer"
            },
            "writeOperation": {
              "description": "Operation to use to write in bulk requests.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "opentelemetry": {
          "description": "OpenTelemetry defines OpenTelemetry Output configuration.",
          "properties": {
            "addLabel": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "This allows you to add custom labels to all metrics exposed through the OpenTelemetry exporter. You may have multiple of these fields.",
              "type": "object"
            },
            "header": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Add a HTTP header key/value pair. Multiple headers can be set.",
              "type": "object"
            },
            "host": {
              "description": "IP address or hostname of the target HTTP Server, default `127.0.0.1`",
              "type": "string"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Optional username credential for access",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "logResponsePayload": {
              "description": "Log the response payload within the Fluent Bit log.",
              "type": "boolean"
            },
            "logsBodyKey": {
              "description": "The log body key to look up in the log events body/message. Sets the Body field of the opentelemtry logs data model.",
              "type": "string"
            },
            "logsBodyKeyAttributes": {
              "description": "If true, remaining unmatched keys are added as attributes.",
              "type": "boolean"
            },
            "logsUri": {
              "description": "Specify an optional HTTP URI for the target web server listening for logs, e.g: /v1/logs",
              "type": "string"
            },
            "metricsUri": {
              "description": "Specify an optional HTTP URI for the target web server listening for metrics, e.g: /v1/metrics",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP port of the target OpenSearch instance, default `80`",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "proxy": {
              "description": "Specify an HTTP Proxy. The expected format of this value is http://HOST:PORT. Note that HTTPS is not currently supported.\nIt is recommended not to set this and to configure the HTTP proxy environment variables instead as they support both HTTP and HTTPS.",
              "type": "string"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tracesUri": {
              "description": "Specify an optional HTTP URI for the target web server listening for traces, e.g: /v1/traces",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "processors": {
          "description": "Processors defines the processors configuration",
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "prometheusExporter": {
          "description": "PrometheusExporter_types defines Prometheus exporter configuration to expose metrics from Fluent Bit.",
          "properties": {
            "addLabels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "This allows you to add custom labels to all metrics exposed through the prometheus exporter. You may have multiple of these fields",
              "type": "object"
            },
            "host": {
              "description": "IP address or hostname of the target HTTP Server, default: 0.0.0.0",
              "type": "string"
            },
            "port": {
              "description": "This is the port Fluent Bit will bind to when hosting prometheus metrics.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "host"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "prometheusRemoteWrite": {
          "description": "PrometheusRemoteWrite_types defines Prometheus Remote Write configuration.",
          "properties": {
            "addLabels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "This allows you to add custom labels to all metrics exposed through the prometheus exporter. You may have multiple of these fields",
              "type": "object"
            },
            "headers": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Add a HTTP header key/value pair. Multiple headers can be set.",
              "type": "object"
            },
            "host": {
              "description": "IP address or hostname of the target HTTP Server, default: 127.0.0.1",
              "type": "string"
            },
            "httpPasswd": {
              "description": "Basic Auth Password.\nRequires HTTP_user to be se",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Basic Auth Username",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "logResponsePayload": {
              "description": "Log the response payload within the Fluent Bit log,default: false",
              "type": "boolean"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP port of the target HTTP Serveri, default:80",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "proxy": {
              "description": "Specify an HTTP Proxy. The expected format of this value is http://HOST:PORT.",
              "type": "string"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "uri": {
              "description": "Specify an optional HTTP URI for the target web server, e.g: /something ,default: /",
              "type": "string"
            },
            "workers": {
              "description": "Enables dedicated thread(s) for this output. Default value is set since version 1.8.13. For previous versions is 0,default : 2",
              "format": "int32",
              "type": "integer"
            }
          },
          "required": [
            "host"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "retry_limit": {
          "description": "RetryLimit represents configuration for the scheduler which can be set independently on each output section.\nThis option allows to disable retries or impose a limit to try N times and then discard the data after reaching that limit.",
          "type": "string"
        },
        "s3": {
          "description": "S3 defines S3 Output configuration.",
          "properties": {
            "AutoRetryRequests": {
              "description": "Immediately retry failed requests to AWS services once.",
              "type": "boolean"
            },
            "Bucket": {
              "description": "S3 Bucket name",
              "type": "string"
            },
            "CannedAcl": {
              "description": "Predefined Canned ACL Policy for S3 objects.",
              "type": "string"
            },
            "Compression": {
              "description": "Compression type for S3 objects.",
              "type": "string"
            },
            "ContentType": {
              "description": "A standard MIME type for the S3 object; this will be set as the Content-Type HTTP header.",
              "type": "string"
            },
            "Endpoint": {
              "description": "Custom endpoint for the S3 API.",
              "type": "string"
            },
            "ExternalId": {
              "description": "Specify an external ID for the STS API, can be used with the role_arn parameter if your role requires an external ID.",
              "type": "string"
            },
            "JsonDateFormat": {
              "description": "Specify the format of the date. Supported formats are double, epoch, iso8601 (eg: 2018-05-30T09:39:52.000681Z) and java_sql_timestamp (eg: 2018-05-30 09:39:52.000681)",
              "type": "string"
            },
            "JsonDateKey": {
              "description": "Specify the name of the time key in the output record. To disable the time key just set the value to false.",
              "type": "string"
            },
            "LogKey": {
              "description": "By default, the whole log record will be sent to S3. If you specify a key name with this option, then only the value of that key will be sent to S3.",
              "type": "string"
            },
            "PreserveDataOrdering": {
              "description": "Normally, when an upload request fails, there is a high chance for the last received chunk to be swapped with a later chunk, resulting in data shuffling. This feature prevents this shuffling by using a queue logic for uploads.",
              "type": "boolean"
            },
            "Profile": {
              "description": "Option to specify an AWS Profile for credentials.",
              "type": "string"
            },
            "Region": {
              "description": "The AWS region of your S3 bucket",
              "type": "string"
            },
            "RetryLimit": {
              "description": "Integer value to set the maximum number of retries allowed.",
              "format": "int32",
              "type": "integer"
            },
            "RoleArn": {
              "description": "ARN of an IAM role to assume",
              "type": "string"
            },
            "S3KeyFormat": {
              "description": "Format string for keys in S3.",
              "type": "string"
            },
            "S3KeyFormatTagDelimiters": {
              "description": "A series of characters which will be used to split the tag into 'parts' for use with the s3_key_format option.",
              "type": "string"
            },
            "SendContentMd5": {
              "description": "Send the Content-MD5 header with PutObject and UploadPart requests, as is required when Object Lock is enabled.",
              "type": "boolean"
            },
            "StaticFilePath": {
              "description": "Disables behavior where UUID string is automatically appended to end of S3 key name when $UUID is not provided in s3_key_format. $UUID, time formatters, $TAG, and other dynamic key formatters all work as expected while this feature is set to true.",
              "type": "boolean"
            },
            "StorageClass": {
              "description": "Specify the storage class for S3 objects. If this option is not specified, objects will be stored with the default 'STANDARD' storage class.",
              "type": "string"
            },
            "StoreDir": {
              "description": "Directory to locally buffer data before sending.",
              "type": "string"
            },
            "StoreDirLimitSize": {
              "description": "The size of the limitation for disk usage in S3.",
              "type": "string"
            },
            "StsEndpoint": {
              "description": "Custom endpoint for the STS API.",
              "type": "string"
            },
            "TotalFileSize": {
              "description": "Specifies the size of files in S3. Minimum size is 1M. With use_put_object On the maximum size is 1G. With multipart upload mode, the maximum size is 50G.",
              "type": "string"
            },
            "UploadChunkSize": {
              "description": "The size of each 'part' for multipart uploads. Max: 50M",
              "type": "string"
            },
            "UploadTimeout": {
              "description": "Whenever this amount of time has elapsed, Fluent Bit will complete an upload and create a new file in S3. For example, set this value to 60m and you will get a new file every hour.",
              "type": "string"
            },
            "UsePutObject": {
              "description": "Use the S3 PutObject API, instead of the multipart upload API.",
              "type": "boolean"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "Bucket",
            "Region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "splunk": {
          "description": "Splunk defines Splunk Output Configuration",
          "properties": {
            "Workers": {
              "description": "Enables dedicated thread(s) for this output. Default value `2` is set since version 1.8.13. For previous versions is 0.",
              "format": "int32",
              "type": "integer"
            },
            "channel": {
              "description": "Specify X-Splunk-Request-Channel Header for the HTTP Event Collector interface.",
              "type": "string"
            },
            "compress": {
              "description": "Set payload compression mechanism. The only available option is gzip.",
              "type": "string"
            },
            "eventFields": {
              "description": "Set event fields for the record. This option is an array and the format is \"key_name\nrecord_accessor_pattern\".",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "eventHost": {
              "description": "Specify the key name that contains the host value. This option allows a record accessors pattern.",
              "type": "string"
            },
            "eventIndex": {
              "description": "The name of the index by which the event data is to be indexed.",
              "type": "string"
            },
            "eventIndexKey": {
              "description": "Set a record key that will populate the index field. If the key is found, it will have precedence\nover the value set in event_index.",
              "type": "string"
            },
            "eventKey": {
              "description": "Specify the key name that will be used to send a single value as part of the record.",
              "type": "string"
            },
            "eventSource": {
              "description": "Set the source value to assign to the event data.",
              "type": "string"
            },
            "eventSourcetype": {
              "description": "Set the sourcetype value to assign to the event data.",
              "type": "string"
            },
            "eventSourcetypeKey": {
              "description": "Set a record key that will populate 'sourcetype'. If the key is found, it will have precedence\nover the value set in event_sourcetype.",
              "type": "string"
            },
            "host": {
              "description": "IP address or hostname of the target OpenSearch instance, default `127.0.0.1`",
              "type": "string"
            },
            "httpBufferSize": {
              "description": "Buffer size used to receive Splunk HTTP responses: Default `2M`",
              "pattern": "^\\d+(k|K|KB|kb|m|M|MB|mb|g|G|GB|gb)?$",
              "type": "string"
            },
            "httpDebugBadRequest": {
              "description": "If the HTTP server response code is 400 (bad request) and this flag is enabled, it will print the full HTTP request\nand response to the stdout interface. This feature is available for debugging purposes.",
              "type": "boolean"
            },
            "httpPassword": {
              "description": "Password for user defined in HTTP_User",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "httpUser": {
              "description": "Optional username credential for access",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP port of the target Splunk instance, default `8088`",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "splunkSendRaw": {
              "description": "When enabled, the record keys and values are set in the top level of the map instead of under the event key. Refer to\nthe Sending Raw Events section from the docs more details to make this option work properly.",
              "type": "boolean"
            },
            "splunkToken": {
              "description": "Specify the Authentication Token for the HTTP Event Collector interface.",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "stackdriver": {
          "description": "Stackdriver defines Stackdriver Output Configuration",
          "properties": {
            "autoformatStackdriverTrace": {
              "description": "Rewrite the trace field to be formatted for use with GCP Cloud Trace",
              "type": "boolean"
            },
            "customK8sRegex": {
              "description": "A custom regex to extract fields from the local_resource_id of the logs",
              "type": "string"
            },
            "exportToProjectID": {
              "description": "The GCP Project that should receive the logs",
              "type": "string"
            },
            "googleServiceCredentials": {
              "description": "Path to GCP Credentials JSON file",
              "type": "string"
            },
            "job": {
              "description": "Identifier for a grouping of tasks. Required if Resource is generic_task",
              "type": "string"
            },
            "k8sClusterLocation": {
              "description": "Location of the cluster that contains the pods/nodes. Required if Resource is k8s_container, k8s_node, or k8s_pod",
              "type": "string"
            },
            "k8sClusterName": {
              "description": "Name of the cluster that the pod is running in. Required if Resource is k8s_container, k8s_node, or k8s_pod",
              "type": "string"
            },
            "labels": {
              "description": "Optional list of comma separated of strings for key/value pairs",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "labelsKey": {
              "description": "Used by Stackdriver to find related labels and extract them to LogEntry Labels",
              "type": "string"
            },
            "location": {
              "description": "GCP/AWS region to store data. Required if Resource is generic_node or generic_task",
              "type": "string"
            },
            "logNameKey": {
              "description": "The value of this field is set as the logName field in Stackdriver",
              "type": "string"
            },
            "metadataServer": {
              "description": "Metadata Server Prefix",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace identifier. Required if Resource is generic_node or generic_task",
              "type": "string"
            },
            "nodeID": {
              "description": "Node identifier within the namespace. Required if Resource is generic_node or generic_task",
              "type": "string"
            },
            "resource": {
              "description": "Set resource types of data",
              "type": "string"
            },
            "resourceLabels": {
              "description": "Optional list of comma seperated strings. Setting these fields overrides the Stackdriver monitored resource API values",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "serviceAccountEmail": {
              "description": "Email associated with the service",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "serviceAccountSecret": {
              "description": "Private Key associated with the service",
              "properties": {
                "valueFrom": {
                  "description": "ValueSource defines how to find a value's key.",
                  "properties": {
                    "secretKeyRef": {
                      "description": "Selects a key of a secret in the pod's namespace",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                          "type": "string"
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "severityKey": {
              "description": "Specify the key that contains the severity information for the logs",
              "type": "string"
            },
            "tagPrefix": {
              "description": "Used to validate the tags of logs that when the Resource is k8s_container, k8s_node, or k8s_pod",
              "type": "string"
            },
            "taskID": {
              "description": "Identifier for a task within a namespace. Required if Resource is generic_task",
              "type": "string"
            },
            "workers": {
              "description": "Number of dedicated threads for the Stackdriver Output Plugin",
              "format": "int32",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "stdout": {
          "description": "Stdout defines Stdout Output configuration.",
          "properties": {
            "format": {
              "description": "Specify the data format to be printed. Supported formats are msgpack json, json_lines and json_stream.",
              "enum": [
                "msgpack",
                "json",
                "json_lines",
                "json_stream"
              ],
              "type": "string"
            },
            "jsonDateFormat": {
              "description": "Specify the format of the date. Supported formats are double,  iso8601 (eg: 2018-05-30T09:39:52.000681Z) and epoch.",
              "enum": [
                "double",
                "iso8601",
                "epoch"
              ],
              "type": "string"
            },
            "jsonDateKey": {
              "description": "Specify the name of the date field in output.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "syslog": {
          "description": "Syslog defines Syslog Output configuration.",
          "properties": {
            "host": {
              "description": "Host domain or IP address of the remote Syslog server.",
              "type": "string"
            },
            "mode": {
              "description": "Mode of the desired transport type, the available options are tcp, tls and udp.",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP or UDP port of the remote Syslog server.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "syslogAppnameKey": {
              "description": "Key name from the original record that contains the application name that generated the message.",
              "type": "string"
            },
            "syslogFacilityKey": {
              "description": "Key from the original record that contains the Syslog facility number.",
              "type": "string"
            },
            "syslogFormat": {
              "description": "Syslog protocol format to use, the available options are rfc3164 and rfc5424.",
              "type": "string"
            },
            "syslogHostnameKey": {
              "description": "Key name from the original record that contains the hostname that generated the message.",
              "type": "string"
            },
            "syslogMaxSize": {
              "description": "Maximum size allowed per message, in bytes.",
              "format": "int32",
              "type": "integer"
            },
            "syslogMessageIDKey": {
              "description": "Key name from the original record that contains the Message ID associated to the message.",
              "type": "string"
            },
            "syslogMessageKey": {
              "description": "Key key name that contains the message to deliver.",
              "type": "string"
            },
            "syslogProcessIDKey": {
              "description": "Key name from the original record that contains the Process ID that generated the message.",
              "type": "string"
            },
            "syslogSDKey": {
              "description": "Key name from the original record that contains the Structured Data (SD) content.",
              "type": "string"
            },
            "syslogSeverityKey": {
              "description": "Key from the original record that contains the Syslog severity number.",
              "type": "string"
            },
            "tls": {
              "description": "Syslog output plugin supports TTL/SSL, for more details about the properties available\nand general configuration, please refer to the TLS/SSL section.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "totalLimitSize": {
              "description": "Limit the maximum number of Chunks in the filesystem for the current output logical destination.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tcp": {
          "description": "TCP defines TCP Output configuration.",
          "properties": {
            "format": {
              "description": "Specify the data format to be printed. Supported formats are msgpack json, json_lines and json_stream.",
              "enum": [
                "msgpack",
                "json",
                "json_lines",
                "json_stream"
              ],
              "type": "string"
            },
            "host": {
              "description": "Target host where Fluent-Bit or Fluentd are listening for Forward messages.",
              "type": "string"
            },
            "jsonDateFormat": {
              "description": "Specify the format of the date. Supported formats are double, epoch\nand iso8601 (eg: 2018-05-30T09:39:52.000681Z)",
              "enum": [
                "double",
                "epoch",
                "iso8601"
              ],
              "type": "string"
            },
            "jsonDateKey": {
              "description": "TSpecify the name of the time key in the output record.\nTo disable the time key just set the value to false.",
              "type": "string"
            },
            "networking": {
              "description": "Include fluentbit networking options for this output-plugin",
              "properties": {
                "DNSMode": {
                  "description": "Select the primary DNS connection type (TCP or UDP).",
                  "enum": [
                    "TCP",
                    "UDP"
                  ],
                  "type": "string"
                },
                "DNSPreferIPv4": {
                  "description": "Prioritize IPv4 DNS results when trying to establish a connection.",
                  "type": "boolean"
                },
                "DNSResolver": {
                  "description": "Select the primary DNS resolver type (LEGACY or ASYNC).",
                  "enum": [
                    "LEGACY",
                    "ASYNC"
                  ],
                  "type": "string"
                },
                "connectTimeout": {
                  "description": "Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.",
                  "format": "int32",
                  "type": "integer"
                },
                "connectTimeoutLogError": {
                  "description": "On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.",
                  "type": "boolean"
                },
                "keepalive": {
                  "description": "Enable or disable connection keepalive support. Accepts a boolean value: on / off.",
                  "enum": [
                    "on",
                    "off"
                  ],
                  "type": "string"
                },
                "keepaliveIdleTimeout": {
                  "description": "Set maximum time expressed in seconds for an idle keepalive connection.",
                  "format": "int32",
                  "type": "integer"
                },
                "keepaliveMaxRecycle": {
                  "description": "Set maximum number of times a keepalive connection can be used before it is retired.",
                  "format": "int32",
                  "type": "integer"
                },
                "maxWorkerConnections": {
                  "description": "Set maximum number of TCP connections that can be established per worker.",
                  "format": "int32",
                  "type": "integer"
                },
                "sourceAddress": {
                  "description": "Specify network address to bind for data traffic.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "port": {
              "description": "TCP Port of the target service.",
              "format": "int32",
              "maximum": 65535,
              "minimum": 1,
              "type": "integer"
            },
            "tls": {
              "description": "Fluent Bit provides integrated support for Transport Layer Security (TLS) and it predecessor Secure Sockets Layer (SSL) respectively.",
              "properties": {
                "caFile": {
                  "description": "Absolute path to CA certificate file",
                  "type": "string"
                },
                "caPath": {
                  "description": "Absolute path to scan for certificate files",
                  "type": "string"
                },
                "crtFile": {
                  "description": "Absolute path to Certificate file",
                  "type": "string"
                },
                "debug": {
                  "description": "Set TLS debug verbosity level.\nIt accept the following values: 0 (No debug), 1 (Error), 2 (State change), 3 (Informational) and 4 Verbose",
                  "enum": [
                    0,
                    1,
                    2,
                    3,
                    4
                  ],
                  "format": "int32",
                  "type": "integer"
                },
                "keyFile": {
                  "description": "Absolute path to private Key file",
                  "type": "string"
                },
                "keyPassword": {
                  "description": "Optional password for tls.key_file file",
                  "properties": {
                    "valueFrom": {
                      "description": "ValueSource defines how to find a value's key.",
                      "properties": {
                        "secretKeyRef": {
                          "description": "Selects a key of a secret in the pod's namespace",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nTODO: Add other useful fields. apiVersion, kind, uid?\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.",
                              "type": "string"
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": "object",
                          "x-kubernetes-map-type": "atomic",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "verify": {
                  "description": "Force certificate validation",
                  "type": "boolean"
                },
                "vhost": {
                  "description": "Hostname to be used for TLS SNI extension",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
