{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/vector/latest.json",
  "description": "A complete Vector configuration.",
  "x-lintel": {
    "source": "https://www.schemastore.org/vector.json",
    "sourceSha256": "31dcb42d1a3e9771cb759a7fdfea79d0c0df6880863718daa985fcb64aa0ea5c",
    "fileMatch": [
      "vector.json",
      "vector.toml",
      "vector.yaml"
    ],
    "parsers": [
      "json",
      "toml",
      "yaml"
    ]
  },
  "allOf": [
    {
      "type": "object",
      "properties": {
        "api": {
          "description": "API options.",
          "default": {
            "enabled": false,
            "address": "127.0.0.1:8686",
            "playground": true
          },
          "type": "object",
          "properties": {
            "address": {
              "description": "The socket address to listen on for the API endpoint.",
              "default": "127.0.0.1:8686",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "An internet socket address, either IPv4 or IPv6.",
                  "type": "string"
                }
              ]
            },
            "enabled": {
              "description": "Whether or not the API endpoint is available.",
              "default": false,
              "type": "boolean"
            },
            "graphql": {
              "description": "Whether or not the GraphQL endpoint is enabled",
              "default": true,
              "type": "boolean"
            },
            "playground": {
              "description": "Whether or not to expose the GraphQL playground on the API endpoint.",
              "default": true,
              "type": "boolean"
            }
          }
        },
        "enrichment_tables": {
          "description": "All configured enrichment tables.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "description": "Fully resolved enrichment table component.",
            "allOf": [
              {
                "description": "Configurable enrichment tables.",
                "oneOf": [
                  {
                    "description": "Exposes data from a static file as an enrichment table.",
                    "allOf": [
                      {
                        "$ref": "#/$defs/vector::enrichment_tables::file::FileConfig",
                        "description": "Configuration for the `file` enrichment table."
                      },
                      {
                        "type": "object",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "description": "Exposes data from a static file as an enrichment table.",
                            "const": "file"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Exposes data from a [MaxMind][maxmind] [GeoIP2][geoip2] database as an enrichment table.",
                    "description": "[maxmind]: <https://www.maxmind.com/>\n[geoip2]: <https://www.maxmind.com/en/geoip2-databases>",
                    "allOf": [
                      {
                        "$ref": "#/$defs/vector::enrichment_tables::geoip::GeoipConfig",
                        "description": "Configuration for the `geoip` enrichment table."
                      },
                      {
                        "type": "object",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "title": "Exposes data from a [MaxMind][maxmind] [GeoIP2][geoip2] database as an enrichment table.",
                            "description": "[maxmind]: <https://www.maxmind.com/>\n[geoip2]: <https://www.maxmind.com/en/geoip2-databases>",
                            "const": "geoip"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Exposes data from a [MaxMind][maxmind] database as an enrichment table.",
                    "description": "[maxmind]: <https://www.maxmind.com/>",
                    "allOf": [
                      {
                        "$ref": "#/$defs/vector::enrichment_tables::mmdb::MmdbConfig",
                        "description": "Configuration for the `mmdb` enrichment table."
                      },
                      {
                        "type": "object",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "title": "Exposes data from a [MaxMind][maxmind] database as an enrichment table.",
                            "description": "[maxmind]: <https://www.maxmind.com/>",
                            "const": "mmdb"
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        "healthchecks": {
          "description": "Healthcheck options.",
          "default": {
            "enabled": true,
            "require_healthy": false
          },
          "type": "object",
          "properties": {
            "enabled": {
              "title": "Whether or not healthchecks are enabled for all sinks.",
              "description": "Can be overridden on a per-sink basis.",
              "type": "boolean"
            },
            "require_healthy": {
              "title": "Whether or not to require a sink to report as being healthy during startup.",
              "description": "When enabled and a sink reports not being healthy, Vector will exit during start-up.\n\nCan be alternatively set, and overridden by, the `--require-healthy` command-line flag.",
              "type": "boolean"
            }
          }
        },
        "provider": {
          "title": "Optional configuration provider to use.",
          "description": "Configuration providers allow sourcing configuration information from a source other than\nthe typical configuration files that must be passed to Vector.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configurable providers in Vector.",
              "oneOf": [
                {
                  "description": "HTTP.",
                  "allOf": [
                    {
                      "$ref": "#/$defs/vector::providers::http::HttpConfig",
                      "description": "Configuration for the `http` provider."
                    },
                    {
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "type": {
                          "description": "HTTP.",
                          "const": "http"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        "schema": {
          "description": "Schema options.",
          "default": {
            "enabled": false,
            "validation": false,
            "log_namespace": null
          },
          "type": "object",
          "properties": {
            "enabled": {
              "description": "Whether or not schema is enabled.",
              "default": false,
              "type": "boolean"
            },
            "log_namespace": {
              "description": "Whether or not to enable log namespacing.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "validation": {
              "description": "Whether or not schema validation is enabled.",
              "default": false,
              "type": "boolean"
            }
          }
        },
        "secret": {
          "description": "All configured secrets backends.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "description": "Configurable secret backends in Vector.",
            "oneOf": [
              {
                "description": "File.",
                "allOf": [
                  {
                    "$ref": "#/$defs/vector::secrets::file::FileBackend",
                    "description": "Configuration for the `file` secrets backend."
                  },
                  {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "File.",
                        "const": "file"
                      }
                    }
                  }
                ]
              },
              {
                "description": "Directory.",
                "allOf": [
                  {
                    "$ref": "#/$defs/vector::secrets::directory::DirectoryBackend",
                    "description": "Configuration for the `directory` secrets backend."
                  },
                  {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "Directory.",
                        "const": "directory"
                      }
                    }
                  }
                ]
              },
              {
                "description": "Exec.",
                "allOf": [
                  {
                    "$ref": "#/$defs/vector::secrets::exec::ExecBackend",
                    "description": "Configuration for the `exec` secrets backend."
                  },
                  {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "Exec.",
                        "const": "exec"
                      }
                    }
                  }
                ]
              },
              {
                "description": "AWS Secrets Manager.",
                "allOf": [
                  {
                    "$ref": "#/$defs/vector::secrets::aws_secrets_manager::AwsSecretsManagerBackend",
                    "description": "Configuration for the `aws_secrets_manager` secrets backend."
                  },
                  {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "AWS Secrets Manager.",
                        "const": "aws_secrets_manager"
                      }
                    }
                  }
                ]
              },
              {
                "description": "Test.",
                "allOf": [
                  {
                    "$ref": "#/$defs/vector::secrets::test::TestBackend",
                    "description": "Configuration for the `test` secrets backend."
                  },
                  {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "Test.",
                        "const": "test"
                      }
                    }
                  }
                ]
              }
            ]
          }
        },
        "sinks": {
          "description": "All configured sinks.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::config::sink::SinkOuter%3Calloc::string::String%3E"
          }
        },
        "sources": {
          "description": "All configured sources.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::config::source::SourceOuter"
          }
        },
        "tests": {
          "description": "All configured unit tests.",
          "default": [],
          "type": "array",
          "items": {
            "description": "A unit test definition.",
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "input": {
                "title": "A unit test input.",
                "description": "An input event to test against.",
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/$defs/vector::config::TestInput"
                  }
                ]
              },
              "inputs": {
                "title": "A unit test input.",
                "description": "A set of input events to test against.",
                "default": [],
                "type": "array",
                "items": {
                  "$ref": "#/$defs/vector::config::TestInput"
                }
              },
              "name": {
                "description": "The name of the unit test.",
                "type": "string"
              },
              "no_outputs_from": {
                "description": "A set of component outputs that should not have emitted any events.",
                "default": [],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "outputs": {
                "title": "A unit test output.",
                "description": "A set of expected output events after the test has run.",
                "default": [],
                "type": "array",
                "items": {
                  "title": "A unit test output.",
                  "description": "An output describes what we expect a transform to emit when fed a certain event, or events, when\nrunning a unit test.",
                  "type": "object",
                  "required": [
                    "extract_from"
                  ],
                  "properties": {
                    "conditions": {
                      "description": "The conditions to run against the output to validate that they were transformed as expected.",
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/$defs/vector::conditions::AnyCondition"
                      }
                    },
                    "extract_from": {
                      "description": "The transform outputs to extract events from.",
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "transforms": {
          "description": "All configured transforms.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::config::transform::TransformOuter%3Calloc::string::String%3E"
          }
        }
      }
    },
    {
      "description": "Global configuration options.",
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for all sinks by default.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how Vector handles event\nacknowledgement.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "data_dir": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The directory used for persisting Vector state data.",
          "description": "This is the directory where Vector will store any state data, such as disk buffers, file\ncheckpoints, and more.\n\nVector must have write permissions to this directory.",
          "default": "/var/lib/vector/"
        },
        "expire_metrics": {
          "title": "The amount of time, in seconds, that internal metrics will persist after having not been\nupdated before they expire and are removed.",
          "description": "Deprecated: use expire_metrics_secs instead",
          "default": null,
          "deprecated": true,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "An duration of time.",
              "type": "object",
              "required": [
                "nsecs",
                "secs"
              ],
              "properties": {
                "nsecs": {
                  "type": "integer",
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "secs": {
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        },
        "expire_metrics_secs": {
          "title": "The amount of time, in seconds, that internal metrics will persist after having not been\nupdated before they expire and are removed.",
          "description": "Set this to a value larger than your `internal_metrics` scrape interval (default 5 minutes)\nthat metrics live long enough to be emitted and captured,",
          "type": [
            "number",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": -9007199254740990.0
        },
        "log_schema": {
          "title": "Default log schema for all events.",
          "description": "This is used if a component does not have its own specific log schema. All events use a log\nschema, whether or not the default is used, to assign event fields on incoming events.",
          "default": {
            "message_key": ".message",
            "timestamp_key": ".timestamp",
            "host_key": ".host",
            "source_type_key": ".source_type",
            "metadata_key": ".metadata"
          },
          "type": "object",
          "properties": {
            "host_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "The name of the event field to treat as the host which sent the message.",
              "description": "This field will generally represent a real host, or container, that generated the message,\nbut is somewhat source-dependent.",
              "default": ".host"
            },
            "message_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "The name of the event field to treat as the event message.",
              "description": "This would be the field that holds the raw message, such as a raw log line.",
              "default": ".message"
            },
            "metadata_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "The name of the event field to set the event metadata in.",
              "description": "Generally, this field will be set by Vector to hold event-specific metadata, such as\nannotations by the `remap` transform when an error or abort is encountered.",
              "default": ".metadata"
            },
            "source_type_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "The name of the event field to set the source identifier in.",
              "description": "This field will be set by the Vector source that the event was created in.",
              "default": ".source_type"
            },
            "timestamp_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "description": "The name of the event field to treat as the event timestamp.",
              "default": ".timestamp"
            }
          }
        },
        "proxy": {
          "$ref": "#/$defs/vector_core::config::proxy::ProxyConfig",
          "title": "Proxy configuration.",
          "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
          "default": {}
        },
        "telemetry": {
          "title": "Telemetry options.",
          "description": "Determines whether `source` and `service` tags should be emitted with the\n`component_sent_*` and `component_received_*` events.",
          "default": {
            "tags": {
              "emit_service": false,
              "emit_source": false
            }
          },
          "type": "object",
          "properties": {
            "tags": {
              "description": "Configures whether to emit certain tags",
              "default": {
                "emit_service": false,
                "emit_source": false
              },
              "type": "object",
              "properties": {
                "emit_service": {
                  "description": "True if the `service` tag should be emitted\nin the `component_received_*` and `component_sent_*`\ntelemetry.",
                  "type": "boolean"
                },
                "emit_source": {
                  "description": "True if the `source` tag should be emitted\nin the `component_received_*` and `component_sent_*`\ntelemetry.",
                  "type": "boolean"
                }
              }
            }
          }
        },
        "timezone": {
          "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
          "title": "The name of the time zone to apply to timestamp conversions that do not contain an explicit time zone.",
          "description": "The time zone name may be any name in the [TZ database][tzdb] or `local` to indicate system\nlocal time.\n\nNote that in Vector/VRL all timestamps are represented in UTC.\n\n[tzdb]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
          "default": null
        }
      }
    }
  ],
  "$defs": {
    "codecs::MetricTagValues": {
      "description": "The user configuration to choose the metric tag strategy.",
      "oneOf": [
        {
          "description": "Tag values are exposed as single strings, the same as they were before this config\noption. Tags with multiple values show the last assigned value, and null values\nare ignored.",
          "const": "single"
        },
        {
          "description": "All tags are exposed as arrays of either string or null values.",
          "const": "full"
        }
      ]
    },
    "codecs::common::length_delimited::LengthDelimitedCoderOptions": {
      "description": "Options for building a `LengthDelimitedDecoder` or `LengthDelimitedEncoder`.",
      "type": "object",
      "properties": {
        "length_field_is_big_endian": {
          "description": "Length field byte order (little or big endian)",
          "default": true,
          "type": "boolean"
        },
        "length_field_length": {
          "description": "Number of bytes representing the field length",
          "default": 4,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "length_field_offset": {
          "description": "Number of bytes in the header before the length field",
          "default": 0,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_frame_length": {
          "description": "Maximum frame length",
          "default": 8388608,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "codecs::decoding::DeserializerConfig": {
      "description": "Configures how events are decoded from raw bytes.",
      "oneOf": [
        {
          "description": "Uses the raw bytes as-is.",
          "type": "object",
          "required": [
            "codec"
          ],
          "properties": {
            "codec": {
              "description": "Uses the raw bytes as-is.",
              "const": "bytes"
            }
          }
        },
        {
          "title": "Decodes the raw bytes as [JSON][json].",
          "description": "[json]: <https://www.json.org/>",
          "allOf": [
            {
              "description": "Config used to build a `JsonDeserializer`.",
              "type": "object",
              "properties": {
                "json": {
                  "description": "JSON-specific decoding options.",
                  "default": {
                    "lossy": true
                  },
                  "type": "object",
                  "properties": {
                    "lossy": {
                      "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                      "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                      "default": true,
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as [JSON][json].",
                  "description": "[json]: <https://www.json.org/>",
                  "const": "json"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as [protobuf][protobuf].",
          "description": "[protobuf]: <https://protobuf.dev/>",
          "allOf": [
            {
              "description": "Config used to build a `ProtobufDeserializer`.",
              "type": "object",
              "properties": {
                "protobuf": {
                  "description": "Protobuf-specific decoding options.",
                  "default": {
                    "desc_file": "",
                    "message_type": ""
                  },
                  "type": "object",
                  "required": [
                    "desc_file",
                    "message_type"
                  ],
                  "properties": {
                    "desc_file": {
                      "$ref": "#/$defs/stdlib::PathBuf",
                      "description": "Path to desc file"
                    },
                    "message_type": {
                      "description": "message type. e.g package.message",
                      "type": "string"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as [protobuf][protobuf].",
                  "description": "[protobuf]: <https://protobuf.dev/>",
                  "const": "protobuf"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as a Syslog message.",
          "description": "Decodes either as the [RFC 3164][rfc3164]-style format (\"old\" style) or the\n[RFC 5424][rfc5424]-style format (\"new\" style, includes structured data).\n\n[rfc3164]: <https://www.ietf.org/rfc/rfc3164.txt>\n[rfc5424]: <https://www.ietf.org/rfc/rfc5424.txt>",
          "allOf": [
            {
              "description": "Config used to build a `SyslogDeserializer`.",
              "type": "object",
              "properties": {
                "syslog": {
                  "description": "Syslog-specific decoding options.",
                  "default": {
                    "lossy": true
                  },
                  "type": "object",
                  "properties": {
                    "lossy": {
                      "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                      "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                      "default": true,
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as a Syslog message.",
                  "description": "Decodes either as the [RFC 3164][rfc3164]-style format (\"old\" style) or the\n[RFC 5424][rfc5424]-style format (\"new\" style, includes structured data).\n\n[rfc3164]: <https://www.ietf.org/rfc/rfc3164.txt>\n[rfc5424]: <https://www.ietf.org/rfc/rfc5424.txt>",
                  "const": "syslog"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as [native Protocol Buffers format][vector_native_protobuf].",
          "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
          "type": "object",
          "required": [
            "codec"
          ],
          "properties": {
            "codec": {
              "title": "Decodes the raw bytes as [native Protocol Buffers format][vector_native_protobuf].",
              "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
              "const": "native"
            }
          }
        },
        {
          "title": "Decodes the raw bytes as [native JSON format][vector_native_json].",
          "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
          "allOf": [
            {
              "description": "Config used to build a `NativeJsonDeserializer`.",
              "type": "object",
              "properties": {
                "native_json": {
                  "description": "Vector's native JSON-specific decoding options.",
                  "default": {
                    "lossy": true
                  },
                  "type": "object",
                  "properties": {
                    "lossy": {
                      "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                      "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                      "default": true,
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as [native JSON format][vector_native_json].",
                  "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                  "const": "native_json"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as a [GELF][gelf] message.",
          "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's decoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
          "allOf": [
            {
              "description": "Config used to build a `GelfDeserializer`.",
              "type": "object",
              "properties": {
                "gelf": {
                  "description": "GELF-specific decoding options.",
                  "default": {
                    "lossy": true
                  },
                  "type": "object",
                  "properties": {
                    "lossy": {
                      "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                      "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                      "default": true,
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as a [GELF][gelf] message.",
                  "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's decoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
                  "const": "gelf"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as an [Influxdb Line Protocol][influxdb] message.",
          "description": "[influxdb]: <https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol>",
          "allOf": [
            {
              "description": "Config used to build a `InfluxdbDeserializer`.\n- [InfluxDB Line Protocol](https://docs.influxdata.com/influxdb/v1/write_protocols/line_protocol_tutorial/):",
              "type": "object",
              "properties": {
                "influxdb": {
                  "description": "Influxdb-specific decoding options.",
                  "default": {
                    "lossy": true
                  },
                  "type": "object",
                  "properties": {
                    "lossy": {
                      "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                      "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                      "default": true,
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as an [Influxdb Line Protocol][influxdb] message.",
                  "description": "[influxdb]: <https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol>",
                  "const": "influxdb"
                }
              }
            }
          ]
        },
        {
          "title": "Decodes the raw bytes as as an [Apache Avro][apache_avro] message.",
          "description": "[apache_avro]: <https://avro.apache.org/>",
          "type": "object",
          "required": [
            "avro",
            "codec"
          ],
          "properties": {
            "avro": {
              "description": "Apache Avro-specific encoder options.",
              "type": "object",
              "required": [
                "schema",
                "strip_schema_id_prefix"
              ],
              "properties": {
                "schema": {
                  "description": "The Avro schema definition.\nPlease note that the following [`apache_avro::types::Value`] variants are currently *not* supported:\n* `Date`\n* `Decimal`\n* `Duration`\n* `Fixed`\n* `TimeMillis`",
                  "type": "string"
                },
                "strip_schema_id_prefix": {
                  "description": "For Avro datum encoded in Kafka messages, the bytes are prefixed with the schema ID.  Set this to true to strip the schema ID prefix.\nAccording to [Confluent Kafka's document](https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#wire-format).",
                  "type": "boolean"
                }
              }
            },
            "codec": {
              "title": "Decodes the raw bytes as as an [Apache Avro][apache_avro] message.",
              "description": "[apache_avro]: <https://avro.apache.org/>",
              "const": "avro"
            }
          }
        },
        {
          "title": "Decodes the raw bytes as a string and passes them as input to a [VRL][vrl] program.",
          "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
          "allOf": [
            {
              "description": "Config used to build a `VrlDeserializer`.",
              "type": "object",
              "required": [
                "vrl"
              ],
              "properties": {
                "vrl": {
                  "description": "VRL-specific decoding options.",
                  "type": "object",
                  "required": [
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "title": "The [Vector Remap Language][vrl] (VRL) program to execute for each event.\nNote that the final contents of the `.` target will be used as the decoding result.\nCompilation error or use of 'abort' in a program will result in a decoding error.",
                      "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
                      "type": "string"
                    },
                    "timezone": {
                      "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
                      "title": "The name of the timezone to apply to timestamp conversions that do not contain an explicit\ntime zone. The time zone name may be any name in the [TZ database][tz_database], or `local`\nto indicate system local time.",
                      "description": "If not set, `local` will be used.\n\n[tz_database]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
                      "default": null
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Decodes the raw bytes as a string and passes them as input to a [VRL][vrl] program.",
                  "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
                  "const": "vrl"
                }
              }
            }
          ]
        }
      ]
    },
    "codecs::decoding::FramingConfig": {
      "title": "Framing configuration.",
      "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
      "oneOf": [
        {
          "description": "Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).",
          "type": "object",
          "required": [
            "method"
          ],
          "properties": {
            "method": {
              "description": "Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).",
              "const": "bytes"
            }
          }
        },
        {
          "description": "Byte frames which are delimited by a chosen character.",
          "allOf": [
            {
              "description": "Config used to build a `CharacterDelimitedDecoder`.",
              "type": "object",
              "required": [
                "character_delimited"
              ],
              "properties": {
                "character_delimited": {
                  "description": "Options for the character delimited decoder.",
                  "type": "object",
                  "required": [
                    "delimiter"
                  ],
                  "properties": {
                    "delimiter": {
                      "description": "The character that delimits byte sequences.",
                      "type": "integer",
                      "maximum": 255.0,
                      "minimum": 0.0
                    },
                    "max_length": {
                      "title": "The maximum length of the byte buffer.",
                      "description": "This length does *not* include the trailing delimiter.\n\nBy default, there is no maximum length enforced. If events are malformed, this can lead to\nadditional resource usage as events continue to be buffered in memory, and can potentially\nlead to memory exhaustion in extreme cases.\n\nIf there is a risk of processing malformed data, such as logs with user-controlled input,\nconsider setting the maximum length to a reasonably large value as a safety net. This\nensures that processing is not actually unbounded.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "Byte frames which are delimited by a chosen character.",
                  "const": "character_delimited"
                }
              }
            }
          ]
        },
        {
          "description": "Byte frames which are prefixed by an unsigned big-endian 32-bit integer indicating the length.",
          "allOf": [
            {
              "description": "Config used to build a `LengthDelimitedDecoder`.",
              "type": "object",
              "required": [
                "length_delimited"
              ],
              "properties": {
                "length_delimited": {
                  "$ref": "#/$defs/codecs::common::length_delimited::LengthDelimitedCoderOptions",
                  "description": "Options for the length delimited decoder."
                }
              }
            },
            {
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "Byte frames which are prefixed by an unsigned big-endian 32-bit integer indicating the length.",
                  "const": "length_delimited"
                }
              }
            }
          ]
        },
        {
          "description": "Byte frames which are delimited by a newline character.",
          "allOf": [
            {
              "description": "Config used to build a `NewlineDelimitedDecoder`.",
              "type": "object",
              "properties": {
                "newline_delimited": {
                  "description": "Options for the newline delimited decoder.",
                  "default": {},
                  "type": "object",
                  "properties": {
                    "max_length": {
                      "title": "The maximum length of the byte buffer.",
                      "description": "This length does *not* include the trailing delimiter.\n\nBy default, there is no maximum length enforced. If events are malformed, this can lead to\nadditional resource usage as events continue to be buffered in memory, and can potentially\nlead to memory exhaustion in extreme cases.\n\nIf there is a risk of processing malformed data, such as logs with user-controlled input,\nconsider setting the maximum length to a reasonably large value as a safety net. This\nensures that processing is not actually unbounded.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "Byte frames which are delimited by a newline character.",
                  "const": "newline_delimited"
                }
              }
            }
          ]
        },
        {
          "title": "Byte frames according to the [octet counting][octet_counting] format.",
          "description": "[octet_counting]: <https://tools.ietf.org/html/rfc6587#section-3.4.1>",
          "allOf": [
            {
              "description": "Config used to build a `OctetCountingDecoder`.",
              "type": "object",
              "properties": {
                "octet_counting": {
                  "description": "Options for the octet counting decoder.",
                  "default": {},
                  "type": "object",
                  "properties": {
                    "max_length": {
                      "description": "The maximum length of the byte buffer.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "title": "Byte frames according to the [octet counting][octet_counting] format.",
                  "description": "[octet_counting]: <https://tools.ietf.org/html/rfc6587#section-3.4.1>",
                  "const": "octet_counting"
                }
              }
            }
          ]
        },
        {
          "title": "Byte frames which are chunked GELF messages.",
          "description": "[chunked_gelf]: <https://go2docs.graylog.org/current/getting_in_log_data/gelf.html>",
          "allOf": [
            {
              "description": "Config used to build a `ChunkedGelfDecoder`.",
              "type": "object",
              "properties": {
                "chunked_gelf": {
                  "description": "Options for the chunked GELF decoder.",
                  "default": {
                    "timeout_secs": 5.0
                  },
                  "type": "object",
                  "properties": {
                    "decompression": {
                      "description": "Decompression configuration for GELF messages.",
                      "default": "Auto",
                      "oneOf": [
                        {
                          "description": "Automatically detect the decompression method based on the magic bytes of the message.",
                          "const": "Auto"
                        },
                        {
                          "description": "Use Gzip decompression.",
                          "const": "Gzip"
                        },
                        {
                          "description": "Use Zlib decompression.",
                          "const": "Zlib"
                        },
                        {
                          "description": "Do not decompress the message.",
                          "const": "None"
                        }
                      ]
                    },
                    "max_length": {
                      "title": "The maximum length of a single GELF message, in bytes. Messages longer than this length will\nbe dropped. If this option is not set, the decoder does not limit the length of messages and\nthe per-message memory is unbounded.",
                      "description": "Note that a message can be composed of multiple chunks and this limit is applied to the whole\nmessage, not to individual chunks.\n\nThis limit takes only into account the message's payload and the GELF header bytes are excluded from the calculation.\nThe message's payload is the concatenation of all the chunks' payloads.",
                      "default": null,
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "pending_messages_limit": {
                      "description": "The maximum number of pending incomplete messages. If this limit is reached, the decoder starts\ndropping chunks of new messages, ensuring the memory usage of the decoder's state is bounded.\nIf this option is not set, the decoder does not limit the number of pending messages and the memory usage\nof its messages buffer can grow unbounded. This matches Graylog Server's behavior.",
                      "default": null,
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "timeout_secs": {
                      "description": "The timeout, in seconds, for a message to be fully received. If the timeout is reached, the\ndecoder drops all the received chunks of the timed out message.",
                      "default": 5.0,
                      "type": "number",
                      "maximum": 9007199254740990.0,
                      "minimum": -9007199254740990.0
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "title": "Byte frames which are chunked GELF messages.",
                  "description": "[chunked_gelf]: <https://go2docs.graylog.org/current/getting_in_log_data/gelf.html>",
                  "const": "chunked_gelf"
                }
              }
            }
          ]
        }
      ]
    },
    "codecs::encoding::format::csv::CsvSerializerConfig": {
      "description": "Config used to build a `CsvSerializer`.",
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "description": "The CSV Serializer Options.",
          "type": "object",
          "required": [
            "fields"
          ],
          "properties": {
            "capacity": {
              "description": "Set the capacity (in bytes) of the internal buffer used in the CSV writer.\nThis defaults to a reasonable setting.",
              "default": 8192,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "delimiter": {
              "description": "The field delimiter to use when writing CSV.",
              "default": 44,
              "type": "integer",
              "maximum": 255.0,
              "minimum": 0.0
            },
            "double_quote": {
              "title": "Enable double quote escapes.",
              "description": "This is enabled by default, but it may be disabled. When disabled, quotes in\nfield data are escaped instead of doubled.",
              "default": true,
              "type": "boolean"
            },
            "escape": {
              "title": "The escape character to use when writing CSV.",
              "description": "In some variants of CSV, quotes are escaped using a special escape character\nlike \\ (instead of escaping quotes by doubling them).\n\nTo use this, `double_quotes` needs to be disabled as well otherwise it is ignored.",
              "default": 34,
              "type": "integer",
              "maximum": 255.0,
              "minimum": 0.0
            },
            "fields": {
              "title": "Configures the fields that will be encoded, as well as the order in which they\nappear in the output.",
              "description": "If a field is not present in the event, the output will be an empty string.\n\nValues of type `Array`, `Object`, and `Regex` are not supported and the\noutput will be an empty string.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath"
              }
            },
            "quote": {
              "description": "The quote character to use when writing CSV.",
              "default": 34,
              "type": "integer",
              "maximum": 255.0,
              "minimum": 0.0
            },
            "quote_style": {
              "description": "The quoting style to use when writing CSV data.",
              "default": "necessary",
              "oneOf": [
                {
                  "description": "Always puts quotes around every field.",
                  "const": "always"
                },
                {
                  "description": "Puts quotes around fields only when necessary.\nThey are necessary when fields contain a quote, delimiter, or record terminator.\nQuotes are also necessary when writing an empty record\n(which is indistinguishable from a record with one empty field).",
                  "const": "necessary"
                },
                {
                  "description": "Puts quotes around all fields that are non-numeric.\nNamely, when writing a field that does not parse as a valid float or integer,\nthen quotes are used even if they aren't strictly necessary.",
                  "const": "non_numeric"
                },
                {
                  "description": "Never writes quotes, even if it produces invalid CSV data.",
                  "const": "never"
                }
              ]
            }
          }
        }
      }
    },
    "codecs::encoding::format::json::JsonSerializerConfig": {
      "description": "Config used to build a `JsonSerializer`.",
      "type": "object",
      "properties": {
        "json": {
          "description": "Options for the JsonSerializer.",
          "default": {
            "pretty": false
          },
          "type": "object",
          "properties": {
            "pretty": {
              "description": "Whether to use pretty JSON formatting.",
              "default": false,
              "type": "boolean"
            }
          }
        },
        "metric_tag_values": {
          "$ref": "#/$defs/codecs::MetricTagValues",
          "title": "Controls how metric tag values are encoded.",
          "description": "When set to `single`, only the last non-bare value of tags are displayed with the\nmetric.  When set to `full`, all metric tags are exposed as separate assignments.",
          "default": "single"
        }
      }
    },
    "core::option::Option<codecs::decoding::FramingConfig>": {
      "title": "Framing configuration.",
      "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "oneOf": [
            {
              "description": "Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).",
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).",
                  "const": "bytes"
                }
              }
            },
            {
              "description": "Byte frames which are delimited by a chosen character.",
              "allOf": [
                {
                  "description": "Config used to build a `CharacterDelimitedDecoder`.",
                  "type": "object",
                  "required": [
                    "character_delimited"
                  ],
                  "properties": {
                    "character_delimited": {
                      "description": "Options for the character delimited decoder.",
                      "type": "object",
                      "required": [
                        "delimiter"
                      ],
                      "properties": {
                        "delimiter": {
                          "description": "The character that delimits byte sequences.",
                          "type": "integer",
                          "maximum": 255.0,
                          "minimum": 0.0
                        },
                        "max_length": {
                          "title": "The maximum length of the byte buffer.",
                          "description": "This length does *not* include the trailing delimiter.\n\nBy default, there is no maximum length enforced. If events are malformed, this can lead to\nadditional resource usage as events continue to be buffered in memory, and can potentially\nlead to memory exhaustion in extreme cases.\n\nIf there is a risk of processing malformed data, such as logs with user-controlled input,\nconsider setting the maximum length to a reasonably large value as a safety net. This\nensures that processing is not actually unbounded.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "description": "Byte frames which are delimited by a chosen character.",
                      "const": "character_delimited"
                    }
                  }
                }
              ]
            },
            {
              "description": "Byte frames which are prefixed by an unsigned big-endian 32-bit integer indicating the length.",
              "allOf": [
                {
                  "description": "Config used to build a `LengthDelimitedDecoder`.",
                  "type": "object",
                  "required": [
                    "length_delimited"
                  ],
                  "properties": {
                    "length_delimited": {
                      "$ref": "#/$defs/codecs::common::length_delimited::LengthDelimitedCoderOptions",
                      "description": "Options for the length delimited decoder."
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "description": "Byte frames which are prefixed by an unsigned big-endian 32-bit integer indicating the length.",
                      "const": "length_delimited"
                    }
                  }
                }
              ]
            },
            {
              "description": "Byte frames which are delimited by a newline character.",
              "allOf": [
                {
                  "description": "Config used to build a `NewlineDelimitedDecoder`.",
                  "type": "object",
                  "properties": {
                    "newline_delimited": {
                      "description": "Options for the newline delimited decoder.",
                      "default": {},
                      "type": "object",
                      "properties": {
                        "max_length": {
                          "title": "The maximum length of the byte buffer.",
                          "description": "This length does *not* include the trailing delimiter.\n\nBy default, there is no maximum length enforced. If events are malformed, this can lead to\nadditional resource usage as events continue to be buffered in memory, and can potentially\nlead to memory exhaustion in extreme cases.\n\nIf there is a risk of processing malformed data, such as logs with user-controlled input,\nconsider setting the maximum length to a reasonably large value as a safety net. This\nensures that processing is not actually unbounded.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "description": "Byte frames which are delimited by a newline character.",
                      "const": "newline_delimited"
                    }
                  }
                }
              ]
            },
            {
              "title": "Byte frames according to the [octet counting][octet_counting] format.",
              "description": "[octet_counting]: <https://tools.ietf.org/html/rfc6587#section-3.4.1>",
              "allOf": [
                {
                  "description": "Config used to build a `OctetCountingDecoder`.",
                  "type": "object",
                  "properties": {
                    "octet_counting": {
                      "description": "Options for the octet counting decoder.",
                      "default": {},
                      "type": "object",
                      "properties": {
                        "max_length": {
                          "description": "The maximum length of the byte buffer.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "title": "Byte frames according to the [octet counting][octet_counting] format.",
                      "description": "[octet_counting]: <https://tools.ietf.org/html/rfc6587#section-3.4.1>",
                      "const": "octet_counting"
                    }
                  }
                }
              ]
            },
            {
              "title": "Byte frames which are chunked GELF messages.",
              "description": "[chunked_gelf]: <https://go2docs.graylog.org/current/getting_in_log_data/gelf.html>",
              "allOf": [
                {
                  "description": "Config used to build a `ChunkedGelfDecoder`.",
                  "type": "object",
                  "properties": {
                    "chunked_gelf": {
                      "description": "Options for the chunked GELF decoder.",
                      "default": {
                        "timeout_secs": 5.0
                      },
                      "type": "object",
                      "properties": {
                        "decompression": {
                          "description": "Decompression configuration for GELF messages.",
                          "default": "Auto",
                          "oneOf": [
                            {
                              "description": "Automatically detect the decompression method based on the magic bytes of the message.",
                              "const": "Auto"
                            },
                            {
                              "description": "Use Gzip decompression.",
                              "const": "Gzip"
                            },
                            {
                              "description": "Use Zlib decompression.",
                              "const": "Zlib"
                            },
                            {
                              "description": "Do not decompress the message.",
                              "const": "None"
                            }
                          ]
                        },
                        "max_length": {
                          "title": "The maximum length of a single GELF message, in bytes. Messages longer than this length will\nbe dropped. If this option is not set, the decoder does not limit the length of messages and\nthe per-message memory is unbounded.",
                          "description": "Note that a message can be composed of multiple chunks and this limit is applied to the whole\nmessage, not to individual chunks.\n\nThis limit takes only into account the message's payload and the GELF header bytes are excluded from the calculation.\nThe message's payload is the concatenation of all the chunks' payloads.",
                          "default": null,
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        },
                        "pending_messages_limit": {
                          "description": "The maximum number of pending incomplete messages. If this limit is reached, the decoder starts\ndropping chunks of new messages, ensuring the memory usage of the decoder's state is bounded.\nIf this option is not set, the decoder does not limit the number of pending messages and the memory usage\nof its messages buffer can grow unbounded. This matches Graylog Server's behavior.",
                          "default": null,
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        },
                        "timeout_secs": {
                          "description": "The timeout, in seconds, for a message to be fully received. If the timeout is reached, the\ndecoder drops all the received chunks of the timed out message.",
                          "default": 5.0,
                          "type": "number",
                          "maximum": 9007199254740990.0,
                          "minimum": -9007199254740990.0
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "title": "Byte frames which are chunked GELF messages.",
                      "description": "[chunked_gelf]: <https://go2docs.graylog.org/current/getting_in_log_data/gelf.html>",
                      "const": "chunked_gelf"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "core::option::Option<std::path::PathBuf>": {
      "description": "A file path.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/stdlib::PathBuf"
        }
      ]
    },
    "core::option::Option<vector::aws::region::RegionOrEndpoint>": {
      "description": "Configuration of the region/endpoint to use when interacting with an AWS service.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint"
        }
      ]
    },
    "core::option::Option<vector::conditions::AnyCondition>": {
      "title": "An event matching condition.",
      "description": "Many methods exist for matching events, such as using a VRL expression, a Datadog Search query string,\nor hard-coded matchers like \"must be a metric\" or \"fields A, B, and C must match these constraints\".\n\nAs VRL is the most common way to apply conditions to events, this type provides a shortcut to define VRL expressions\ndirectly in the configuration by passing the VRL expression as a string:\n\n```toml\ncondition = '.message == \"hooray\"'\n```\n\nWhen other condition types are required, they can be specified with an enum-style notation:\n\n```toml\ncondition.type = 'datadog_search'\ncondition.source = 'NOT \"foo\"'\n```",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "title": "An event matching condition.",
          "description": "Many methods exist for matching events, such as using a VRL expression, a Datadog Search query string,\nor hard-coded matchers like \"must be a metric\" or \"fields A, B, and C must match these constraints\".\n\nAs VRL is the most common way to apply conditions to events, this type provides a shortcut to define VRL expressions\ndirectly in the configuration by passing the VRL expression as a string:\n\n```toml\ncondition = '.message == \"hooray\"'\n```\n\nWhen other condition types are required, they can be specified with an enum-style notation:\n\n```toml\ncondition.type = 'datadog_search'\ncondition.source = 'NOT \"foo\"'\n```",
          "oneOf": [
            {
              "description": "A [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
              "type": "string"
            },
            {
              "title": "An event matching condition.",
              "description": "A fully-specified condition.",
              "oneOf": [
                {
                  "description": "Matches an event if it is a log.",
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Matches an event if it is a log.",
                      "const": "is_log"
                    }
                  }
                },
                {
                  "description": "Matches an event if it is a metric.",
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Matches an event if it is a metric.",
                      "const": "is_metric"
                    }
                  }
                },
                {
                  "description": "Matches an event if it is a trace.",
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Matches an event if it is a trace.",
                      "const": "is_trace"
                    }
                  }
                },
                {
                  "description": "Matches an event with a [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
                  "allOf": [
                    {
                      "description": "A condition that uses the [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions) against an event.",
                      "type": "object",
                      "required": [
                        "source"
                      ],
                      "properties": {
                        "runtime": {
                          "description": "The runtime to use for executing VRL code.",
                          "default": "ast",
                          "type": "string"
                        },
                        "source": {
                          "description": "The VRL boolean expression.",
                          "type": "string"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "type": {
                          "description": "Matches an event with a [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
                          "const": "vrl"
                        }
                      }
                    }
                  ]
                },
                {
                  "description": "Matches an event with a [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query.",
                  "allOf": [
                    {
                      "description": "A condition that uses the [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query syntax against an event.",
                      "type": "object",
                      "required": [
                        "source"
                      ],
                      "properties": {
                        "source": {
                          "description": "The query string.",
                          "type": "string"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "type": {
                          "description": "Matches an event with a [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query.",
                          "const": "datadog_search"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "core::option::Option<vector::http::Auth>": {
      "title": "Configuration of the authentication strategy for HTTP requests.",
      "description": "HTTP authentication should be used with HTTPS only, as the authentication credentials are passed as an\nHTTP header without any additional encryption beyond what is provided by the transport itself.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "title": "Configuration of the authentication strategy for HTTP requests.",
          "description": "HTTP authentication should be used with HTTPS only, as the authentication credentials are passed as an\nHTTP header without any additional encryption beyond what is provided by the transport itself.",
          "oneOf": [
            {
              "title": "Basic authentication.",
              "description": "The username and password are concatenated and encoded via [base64][base64].\n\n[base64]: <https://en.wikipedia.org/wiki/Base64>",
              "type": "object",
              "required": [
                "password",
                "strategy",
                "user"
              ],
              "properties": {
                "password": {
                  "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                  "description": "The basic authentication password."
                },
                "strategy": {
                  "title": "Basic authentication.",
                  "description": "The username and password are concatenated and encoded via [base64][base64].\n\n[base64]: <https://en.wikipedia.org/wiki/Base64>",
                  "const": "basic"
                },
                "user": {
                  "description": "The basic authentication username.",
                  "type": "string"
                }
              }
            },
            {
              "title": "Bearer authentication.",
              "description": "The bearer token value (OAuth2, JWT, etc.) is passed as-is.",
              "type": "object",
              "required": [
                "strategy",
                "token"
              ],
              "properties": {
                "strategy": {
                  "title": "Bearer authentication.",
                  "description": "The bearer token value (OAuth2, JWT, etc.) is passed as-is.",
                  "const": "bearer"
                },
                "token": {
                  "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                  "description": "The bearer authentication token."
                }
              }
            }
          ]
        }
      ]
    },
    "core::option::Option<vector::nats::NatsAuthConfig>": {
      "description": "Configuration of the authentication strategy when interacting with NATS.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "Configuration of the authentication strategy when interacting with NATS.",
          "oneOf": [
            {
              "description": "Username/password authentication.",
              "type": "object",
              "required": [
                "strategy",
                "user_password"
              ],
              "properties": {
                "strategy": {
                  "description": "Username/password authentication.",
                  "const": "user_password"
                },
                "user_password": {
                  "description": "Username and password configuration.",
                  "type": "object",
                  "required": [
                    "password",
                    "user"
                  ],
                  "properties": {
                    "password": {
                      "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                      "description": "Password."
                    },
                    "user": {
                      "description": "Username.",
                      "type": "string"
                    }
                  }
                }
              }
            },
            {
              "description": "Token authentication.",
              "type": "object",
              "required": [
                "strategy",
                "token"
              ],
              "properties": {
                "strategy": {
                  "description": "Token authentication.",
                  "const": "token"
                },
                "token": {
                  "description": "Token configuration.",
                  "type": "object",
                  "required": [
                    "value"
                  ],
                  "properties": {
                    "value": {
                      "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                      "description": "Token."
                    }
                  }
                }
              }
            },
            {
              "description": "Credentials file authentication. (JWT-based)",
              "type": "object",
              "required": [
                "credentials_file",
                "strategy"
              ],
              "properties": {
                "credentials_file": {
                  "description": "Credentials file configuration.",
                  "type": "object",
                  "required": [
                    "path"
                  ],
                  "properties": {
                    "path": {
                      "description": "Path to credentials file.",
                      "type": "string"
                    }
                  }
                },
                "strategy": {
                  "description": "Credentials file authentication. (JWT-based)",
                  "const": "credentials_file"
                }
              }
            },
            {
              "description": "NKey authentication.",
              "type": "object",
              "required": [
                "nkey",
                "strategy"
              ],
              "properties": {
                "nkey": {
                  "description": "NKeys configuration.",
                  "type": "object",
                  "required": [
                    "nkey",
                    "seed"
                  ],
                  "properties": {
                    "nkey": {
                      "title": "User.",
                      "description": "Conceptually, this is equivalent to a public key.",
                      "type": "string"
                    },
                    "seed": {
                      "title": "Seed.",
                      "description": "Conceptually, this is equivalent to a private key.",
                      "type": "string"
                    }
                  }
                },
                "strategy": {
                  "description": "NKey authentication.",
                  "const": "nkey"
                }
              }
            }
          ]
        }
      ]
    },
    "core::option::Option<vector::sinks::influxdb::InfluxDb1Settings>": {
      "description": "Configuration settings for InfluxDB v0.x/v1.x.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "Configuration settings for InfluxDB v0.x/v1.x.",
          "type": "object",
          "required": [
            "database"
          ],
          "properties": {
            "consistency": {
              "title": "The consistency level to use for writes.",
              "description": "Only relevant when using InfluxDB v0.x/v1.x.",
              "type": [
                "string",
                "null"
              ]
            },
            "database": {
              "title": "The name of the database to write into.",
              "description": "Only relevant when using InfluxDB v0.x/v1.x.",
              "type": "string"
            },
            "password": {
              "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
              "title": "The password to authenticate with.",
              "description": "Only relevant when using InfluxDB v0.x/v1.x."
            },
            "retention_policy_name": {
              "title": "The target retention policy for writes.",
              "description": "Only relevant when using InfluxDB v0.x/v1.x.",
              "type": [
                "string",
                "null"
              ]
            },
            "username": {
              "title": "The username to authenticate with.",
              "description": "Only relevant when using InfluxDB v0.x/v1.x.",
              "type": [
                "string",
                "null"
              ]
            }
          }
        }
      ]
    },
    "core::option::Option<vector::sinks::influxdb::InfluxDb2Settings>": {
      "description": "Configuration settings for InfluxDB v2.x.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "Configuration settings for InfluxDB v2.x.",
          "type": "object",
          "required": [
            "bucket",
            "org",
            "token"
          ],
          "properties": {
            "bucket": {
              "title": "The name of the bucket to write into.",
              "description": "Only relevant when using InfluxDB v2.x and above.",
              "type": "string"
            },
            "org": {
              "title": "The name of the organization to write into.",
              "description": "Only relevant when using InfluxDB v2.x and above.",
              "type": "string"
            },
            "token": {
              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
              "title": "The [token][token_docs] to authenticate with.",
              "description": "Only relevant when using InfluxDB v2.x and above.\n\n[token_docs]: <https://v2.docs.influxdata.com/v2.0/security/tokens/>"
            }
          }
        }
      ]
    },
    "core::option::Option<vector::sinks::util::buffer::compression::Compression>": {
      "title": "Compression configuration.",
      "description": "All compression algorithms use the default compression level unless otherwise specified.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "oneOf": [
            {
              "description": "Compression algorithm.",
              "oneOf": [
                {
                  "description": "No compression.",
                  "const": "none"
                },
                {
                  "title": "[Gzip][gzip] compression.",
                  "description": "[gzip]: <https://www.gzip.org/>",
                  "const": "gzip"
                },
                {
                  "title": "[Zlib][zlib] compression.",
                  "description": "[zlib]: <https://zlib.net/>",
                  "const": "zlib"
                },
                {
                  "title": "[Zstandard][zstd] compression.",
                  "description": "[zstd]: <https://facebook.github.io/zstd/>",
                  "const": "zstd"
                },
                {
                  "title": "[Snappy][snappy] compression.",
                  "description": "[snappy]: <https://github.com/google/snappy/blob/main/docs/README.md>",
                  "const": "snappy"
                }
              ]
            },
            {
              "description": "Compression algorithm and compression level.",
              "type": "object",
              "required": [
                "algorithm"
              ],
              "properties": {
                "algorithm": {
                  "description": "Compression algorithm.",
                  "oneOf": [
                    {
                      "description": "No compression.",
                      "const": "none"
                    },
                    {
                      "title": "[Gzip][gzip] compression.",
                      "description": "[gzip]: <https://www.gzip.org/>",
                      "const": "gzip"
                    },
                    {
                      "title": "[Zlib][zlib] compression.",
                      "description": "[zlib]: <https://zlib.net/>",
                      "const": "zlib"
                    },
                    {
                      "title": "[Zstandard][zstd] compression.",
                      "description": "[zstd]: <https://facebook.github.io/zstd/>",
                      "const": "zstd"
                    },
                    {
                      "title": "[Snappy][snappy] compression.",
                      "description": "[snappy]: <https://github.com/google/snappy/blob/main/docs/README.md>",
                      "const": "snappy"
                    }
                  ]
                },
                "level": {
                  "$ref": "#/$defs/vector::sinks::util::buffer::compression::CompressionLevel"
                }
              }
            }
          ]
        }
      ]
    },
    "core::option::Option<vector::sinks::util::uri::UriSerde>": {
      "title": "The URI component of a request.",
      "description": "",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde"
        }
      ]
    },
    "core::option::Option<vector::sources::util::http::auth::HttpSourceAuthConfig>": {
      "description": "HTTP Basic authentication configuration.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "HTTP Basic authentication configuration.",
          "type": "object",
          "required": [
            "password",
            "username"
          ],
          "properties": {
            "password": {
              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
              "description": "The password for basic authentication."
            },
            "username": {
              "description": "The username for basic authentication.",
              "type": "string"
            }
          }
        }
      ]
    },
    "core::option::Option<vector::sources::util::multiline_config::MultilineConfig>": {
      "description": "Configuration of multi-line aggregation.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "Configuration of multi-line aggregation.",
          "type": "object",
          "required": [
            "condition_pattern",
            "mode",
            "start_pattern",
            "timeout_ms"
          ],
          "properties": {
            "condition_pattern": {
              "title": "Regular expression pattern that is used to determine whether or not more lines should be read.",
              "description": "This setting must be configured in conjunction with `mode`.",
              "type": "string"
            },
            "mode": {
              "title": "Aggregation mode.",
              "description": "This setting must be configured in conjunction with `condition_pattern`.",
              "oneOf": [
                {
                  "title": "All consecutive lines matching this pattern are included in the group.",
                  "description": "The first line (the line that matched the start pattern) does not need to match the `ContinueThrough` pattern.\n\nThis is useful in cases such as a Java stack trace, where some indicator in the line (such as a leading\nwhitespace) indicates that it is an extension of the proceeding line.",
                  "const": "continue_through"
                },
                {
                  "title": "All consecutive lines matching this pattern, plus one additional line, are included in the group.",
                  "description": "This is useful in cases where a log message ends with a continuation marker, such as a backslash, indicating\nthat the following line is part of the same message.",
                  "const": "continue_past"
                },
                {
                  "title": "All consecutive lines not matching this pattern are included in the group.",
                  "description": "This is useful where a log line contains a marker indicating that it begins a new message.",
                  "const": "halt_before"
                },
                {
                  "title": "All consecutive lines, up to and including the first line matching this pattern, are included in the group.",
                  "description": "This is useful where a log line ends with a termination marker, such as a semicolon.",
                  "const": "halt_with"
                }
              ]
            },
            "start_pattern": {
              "description": "Regular expression pattern that is used to match the start of a new message.",
              "type": "string"
            },
            "timeout_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "title": "The maximum amount of time to wait for the next additional line, in milliseconds.",
              "description": "Once this timeout is reached, the buffered message is guaranteed to be flushed, even if incomplete."
            }
          }
        }
      ]
    },
    "core::option::Option<vector::template::Template>": {
      "title": "A templated field.",
      "description": "In many cases, components can be configured so that part of the component's functionality can be\ncustomized on a per-event basis. For example, you have a sink that writes events to a file and you want to\nspecify which file an event should go to by using an event field as part of the\ninput to the filename used.\n\nBy using `Template`, users can specify either fixed strings or templated strings. Templated strings use a common syntax to\nrefer to fields in an event that is used as the input data when rendering the template. An example of a fixed string\nis `my-file.log`. An example of a template string is `my-file-{{key}}.log`, where `{{key}}`\nis the key's value when the template is rendered into a string.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector::template::Template"
        }
      ]
    },
    "core::option::Option<vector_common::sensitive_string::SensitiveString>": {
      "description": "Wrapper for sensitive strings containing credentials",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString"
        }
      ]
    },
    "core::option::Option<vector_core::ipallowlist::IpAllowlistConfig>": {
      "description": "List of allowed origin IP networks. IP addresses must be in CIDR notation.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "List of allowed origin IP networks. IP addresses must be in CIDR notation.",
          "type": "array",
          "items": {
            "description": "IP network",
            "type": "string"
          }
        }
      ]
    },
    "core::option::Option<vector_core::tcp::TcpKeepaliveConfig>": {
      "description": "TCP keepalive settings for socket-based components.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "TCP keepalive settings for socket-based components.",
          "type": "object",
          "properties": {
            "time_secs": {
              "description": "The time to wait before starting to send TCP keepalive probes on an idle connection.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        }
      ]
    },
    "core::option::Option<vector_core::tls::settings::TlsConfig>": {
      "description": "TLS configuration.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_core::tls::settings::TlsConfig"
        }
      ]
    },
    "core::option::Option<vector_core::tls::settings::TlsEnableableConfig>": {
      "description": "Configures the TLS options for incoming/outgoing connections.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_core::tls::settings::TlsEnableableConfig"
        }
      ]
    },
    "core::option::Option<vector_core::tls::settings::TlsSourceConfig>": {
      "description": "TlsEnableableConfig for `sources`, adding metadata from the client certificate.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "description": "TlsEnableableConfig for `sources`, adding metadata from the client certificate.",
          "allOf": [
            {
              "type": "object",
              "properties": {
                "client_metadata_key": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
                  "description": "Event field for client certificate metadata."
                }
              }
            },
            {
              "$ref": "#/$defs/vector_core::tls::settings::TlsEnableableConfig",
              "description": "Configures the TLS options for incoming/outgoing connections."
            }
          ]
        }
      ]
    },
    "core::option::Option<vector_lookup::lookup_v2::ConfigValuePath>": {
      "description": "A wrapper around `OwnedValuePath` that allows it to be used in Vector config.\nThis requires a valid path to be used. If you want to allow optional paths,\nuse [optional_path::OptionalValuePath].",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
        }
      ]
    },
    "core::option::Option<vector_lookup::lookup_v2::optional_path::OptionalTargetPath>": {
      "description": "An optional path that deserializes an empty string to `None`.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath"
        }
      ]
    },
    "core::option::Option<vector_lookup::lookup_v2::optional_path::OptionalValuePath>": {
      "description": "An optional path that deserializes an empty string to `None`.",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath"
        }
      ]
    },
    "core::option::Option<vrl::compiler::datetime::TimeZone>": {
      "title": "Timezone to use for any date specifiers in template strings.",
      "description": "This can refer to any valid timezone as defined in the [TZ database][tzdb], or \"local\" which refers to the system local timezone. It will default to the [globally configured timezone](https://vector.dev/docs/reference/configuration/global-options/#timezone).\n\n[tzdb]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "title": "Timezone to use for any date specifiers in template strings.",
          "description": "This can refer to any valid timezone as defined in the [TZ database][tzdb], or \"local\" which refers to the system local timezone. It will default to the [globally configured timezone](https://vector.dev/docs/reference/configuration/global-options/#timezone).\n\n[tzdb]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
          "oneOf": [
            {
              "description": "System local timezone.",
              "const": "local"
            },
            {
              "title": "A named timezone.",
              "description": "Must be a valid name in the [TZ database][tzdb].\n\n[tzdb]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
              "type": "string"
            }
          ]
        }
      ]
    },
    "file_source::ReadFromConfig": {
      "description": "File position to use when reading a new file.",
      "oneOf": [
        {
          "description": "Read from the beginning of the file.",
          "const": "beginning"
        },
        {
          "description": "Start reading from the current end of the file.",
          "const": "end"
        }
      ]
    },
    "serde_with::DurationFractionalSeconds": {
      "description": "A span of time, in fractional seconds.",
      "type": "number",
      "maximum": 9007199254740990.0,
      "minimum": -9007199254740990.0
    },
    "serde_with::DurationMilliSeconds": {
      "description": "A span of time, in whole milliseconds.",
      "type": "integer",
      "maximum": 9007199254740990.0,
      "minimum": 0.0
    },
    "serde_with::DurationSeconds": {
      "description": "A span of time, in whole seconds.",
      "type": "integer",
      "maximum": 9007199254740990.0,
      "minimum": 0.0
    },
    "stdlib::PathBuf": {
      "description": "A file path.",
      "type": "string",
      "pattern": "(\\/.*|[a-zA-Z]:\\\\(?:([^<>:\"\\/\\\\|?*]*[^<>:\"\\/\\\\|?*.]\\\\|..\\\\)*([^<>:\"\\/\\\\|?*]*[^<>:\"\\/\\\\|?*.]\\\\?|..\\\\))?)"
    },
    "stdlib::SocketAddr": {
      "description": "An internet socket address, either IPv4 or IPv6.",
      "type": "string"
    },
    "vector::amqp::AmqpConfig": {
      "description": "AMQP connection options.",
      "type": "object",
      "required": [
        "connection_string"
      ],
      "properties": {
        "connection_string": {
          "title": "URI for the AMQP server.",
          "description": "The URI has the format of\n`amqp://<user>:<password>@<host>:<port>/<vhost>?timeout=<seconds>`.\n\nThe default vhost can be specified by using a value of `%2f`.\n\nTo connect over TLS, a scheme of `amqps` can be specified instead. For example,\n`amqps://...`. Additional TLS settings, such as client certificate verification, can be\nconfigured under the `tls` section.",
          "type": "string"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::aws::auth::AwsAuthentication": {
      "description": "Configuration of the authentication strategy for interacting with AWS services.",
      "anyOf": [
        {
          "description": "Authenticate using a fixed access key and secret pair.",
          "type": "object",
          "required": [
            "access_key_id",
            "secret_access_key"
          ],
          "properties": {
            "access_key_id": {
              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
              "description": "The AWS access key ID."
            },
            "assume_role": {
              "title": "The ARN of an [IAM role][iam_role] to assume.",
              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
              "type": [
                "string",
                "null"
              ]
            },
            "external_id": {
              "title": "The optional unique external ID in conjunction with role to assume.",
              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
              "type": [
                "string",
                "null"
              ]
            },
            "region": {
              "title": "The [AWS region][aws_region] to send STS requests to.",
              "description": "If not set, this will default to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
              "type": [
                "string",
                "null"
              ]
            },
            "secret_access_key": {
              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
              "description": "The AWS secret access key."
            }
          }
        },
        {
          "title": "Authenticate using credentials stored in a file.",
          "description": "Additionally, the specific credential profile to use can be set.\nThe file format must match the credentials file format outlined in\n<https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html>.",
          "type": "object",
          "required": [
            "credentials_file"
          ],
          "properties": {
            "credentials_file": {
              "description": "Path to the credentials file.",
              "type": "string"
            },
            "profile": {
              "title": "The credentials profile to use.",
              "description": "Used to select AWS credentials from a provided credentials file.",
              "default": "default",
              "type": "string"
            }
          }
        },
        {
          "description": "Assume the given role ARN.",
          "type": "object",
          "required": [
            "assume_role"
          ],
          "properties": {
            "assume_role": {
              "title": "The ARN of an [IAM role][iam_role] to assume.",
              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
              "type": "string"
            },
            "external_id": {
              "title": "The optional unique external ID in conjunction with role to assume.",
              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
              "type": [
                "string",
                "null"
              ]
            },
            "imds": {
              "description": "Configuration for authenticating with AWS through IMDS.",
              "default": {
                "max_attempts": 4,
                "connect_timeout_seconds": 1,
                "read_timeout_seconds": 1
              },
              "type": "object",
              "properties": {
                "connect_timeout_seconds": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "Connect timeout for IMDS.",
                  "default": 1
                },
                "max_attempts": {
                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                  "default": 4,
                  "type": "integer",
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "read_timeout_seconds": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "Read timeout for IMDS.",
                  "default": 1
                }
              }
            },
            "load_timeout_secs": {
              "title": "Timeout for assuming the role, in seconds.",
              "description": "Relevant when the default credentials chain or `assume_role` is used.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "region": {
              "title": "The [AWS region][aws_region] to send STS requests to.",
              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        {
          "description": "Default authentication strategy which tries a variety of substrategies in sequential order.",
          "type": "object",
          "properties": {
            "imds": {
              "description": "Configuration for authenticating with AWS through IMDS.",
              "default": {
                "max_attempts": 4,
                "connect_timeout_seconds": 1,
                "read_timeout_seconds": 1
              },
              "type": "object",
              "properties": {
                "connect_timeout_seconds": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "Connect timeout for IMDS.",
                  "default": 1
                },
                "max_attempts": {
                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                  "default": 4,
                  "type": "integer",
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "read_timeout_seconds": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "Read timeout for IMDS.",
                  "default": 1
                }
              }
            },
            "load_timeout_secs": {
              "title": "Timeout for successfully loading any credentials, in seconds.",
              "description": "Relevant when the default credentials chain or `assume_role` is used.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "region": {
              "title": "The [AWS region][aws_region] to send STS requests to.",
              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
              "type": [
                "string",
                "null"
              ]
            }
          }
        }
      ]
    },
    "vector::aws::region::RegionOrEndpoint": {
      "description": "Configuration of the region/endpoint to use when interacting with an AWS service.",
      "default": {
        "region": null,
        "endpoint": null
      },
      "type": "object",
      "properties": {
        "endpoint": {
          "description": "Custom endpoint for use with AWS-compatible services.",
          "type": [
            "string",
            "null"
          ]
        },
        "region": {
          "title": "The [AWS region][aws_region] of the target service.",
          "description": "[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "vector::codecs::encoding::config::EncodingConfig": {
      "description": "Configures how events are encoded into raw bytes.",
      "allOf": [
        {
          "description": "Serializer configuration.",
          "oneOf": [
            {
              "title": "Encodes an event as an [Apache Avro][apache_avro] message.",
              "description": "[apache_avro]: <https://avro.apache.org/>",
              "type": "object",
              "required": [
                "avro",
                "codec"
              ],
              "properties": {
                "avro": {
                  "description": "Apache Avro-specific encoder options.",
                  "type": "object",
                  "required": [
                    "schema"
                  ],
                  "properties": {
                    "schema": {
                      "description": "The Avro schema.",
                      "type": "string"
                    }
                  }
                },
                "codec": {
                  "title": "Encodes an event as an [Apache Avro][apache_avro] message.",
                  "description": "[apache_avro]: <https://avro.apache.org/>",
                  "const": "avro"
                }
              }
            },
            {
              "description": "Encodes an event as a CEF (Common Event Format) formatted message.",
              "allOf": [
                {
                  "description": "Options for the CEF encoder.",
                  "type": "object",
                  "required": [
                    "cef"
                  ],
                  "properties": {
                    "cef": {
                      "description": "The CEF Serializer Options.",
                      "type": "object",
                      "required": [
                        "device_event_class_id",
                        "device_product",
                        "device_vendor",
                        "device_version",
                        "name",
                        "severity",
                        "version"
                      ],
                      "properties": {
                        "device_event_class_id": {
                          "description": "Unique identifier for each event type. Identifies the type of event reported.\nThe value length must be less than or equal to 1023.",
                          "type": "string"
                        },
                        "device_product": {
                          "description": "Identifies the product of a vendor.\nThe part of a unique device identifier. No two products can use the same combination of device vendor and device product.\nThe value length must be less than or equal to 63.",
                          "type": "string"
                        },
                        "device_vendor": {
                          "description": "Identifies the vendor of the product.\nThe part of a unique device identifier. No two products can use the same combination of device vendor and device product.\nThe value length must be less than or equal to 63.",
                          "type": "string"
                        },
                        "device_version": {
                          "description": "Identifies the version of the problem. In combination with device product and vendor, it composes the unique id of the device that sends messages.\nThe value length must be less than or equal to 31.",
                          "type": "string"
                        },
                        "extensions": {
                          "description": "The collection of key-value pairs. Keys are the keys of the extensions, and values are paths that point to the extension values of a log event.\nThe event can have any number of key-value pairs in any order.",
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath"
                          }
                        },
                        "name": {
                          "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath",
                          "description": "This is a path that points to the human-readable description of a log event.\nThe value length must be less than or equal to 512.\nEquals \"cef.name\" by default."
                        },
                        "severity": {
                          "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath",
                          "title": "This is a path that points to the field of a log event that reflects importance of the event.\nReflects importance of the event.",
                          "description": "It must point to a number from 0 to 10.\n0 = Lowest, 10 = Highest.\nEquals to \"cef.severity\" by default."
                        },
                        "version": {
                          "description": "CEF Version. Can be either 0 or 1.\nEquals to \"0\" by default.",
                          "oneOf": [
                            {
                              "description": "CEF specification version 0.1.",
                              "const": "V0"
                            },
                            {
                              "description": "CEF specification version 1.x.",
                              "const": "V1"
                            }
                          ]
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "description": "Encodes an event as a CEF (Common Event Format) formatted message.",
                      "const": "cef"
                    }
                  }
                }
              ]
            },
            {
              "title": "Encodes an event as a CSV message.",
              "description": "This codec must be configured with fields to encode.",
              "allOf": [
                {
                  "$ref": "#/$defs/codecs::encoding::format::csv::CsvSerializerConfig",
                  "description": "Config used to build a `CsvSerializer`."
                },
                {
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "title": "Encodes an event as a CSV message.",
                      "description": "This codec must be configured with fields to encode.",
                      "const": "csv"
                    }
                  }
                }
              ]
            },
            {
              "title": "Encodes an event as a [GELF][gelf] message.",
              "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's encoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Encodes an event as a [GELF][gelf] message.",
                  "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's encoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
                  "const": "gelf"
                }
              }
            },
            {
              "title": "Encodes an event as [JSON][json].",
              "description": "[json]: <https://www.json.org/>",
              "allOf": [
                {
                  "$ref": "#/$defs/codecs::encoding::format::json::JsonSerializerConfig",
                  "description": "Config used to build a `JsonSerializer`."
                },
                {
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "title": "Encodes an event as [JSON][json].",
                      "description": "[json]: <https://www.json.org/>",
                      "const": "json"
                    }
                  }
                }
              ]
            },
            {
              "title": "Encodes an event as a [logfmt][logfmt] message.",
              "description": "[logfmt]: <https://brandur.org/logfmt>",
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Encodes an event as a [logfmt][logfmt] message.",
                  "description": "[logfmt]: <https://brandur.org/logfmt>",
                  "const": "logfmt"
                }
              }
            },
            {
              "title": "Encodes an event in the [native Protocol Buffers format][vector_native_protobuf].",
              "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Encodes an event in the [native Protocol Buffers format][vector_native_protobuf].",
                  "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                  "const": "native"
                }
              }
            },
            {
              "title": "Encodes an event in the [native JSON format][vector_native_json].",
              "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "Encodes an event in the [native JSON format][vector_native_json].",
                  "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                  "const": "native_json"
                }
              }
            },
            {
              "title": "Encodes an event as a [Protobuf][protobuf] message.",
              "description": "[protobuf]: <https://protobuf.dev/>",
              "allOf": [
                {
                  "description": "Config used to build a `ProtobufSerializer`.",
                  "type": "object",
                  "required": [
                    "protobuf"
                  ],
                  "properties": {
                    "protobuf": {
                      "description": "Options for the Protobuf serializer.",
                      "type": "object",
                      "required": [
                        "desc_file",
                        "message_type"
                      ],
                      "properties": {
                        "desc_file": {
                          "$ref": "#/$defs/stdlib::PathBuf",
                          "title": "The path to the protobuf descriptor set file.",
                          "description": "This file is the output of `protoc -o <path> ...`"
                        },
                        "message_type": {
                          "description": "The name of the message type to use for serializing.",
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "title": "Encodes an event as a [Protobuf][protobuf] message.",
                      "description": "[protobuf]: <https://protobuf.dev/>",
                      "const": "protobuf"
                    }
                  }
                }
              ]
            },
            {
              "title": "No encoding.",
              "description": "This encoding uses the `message` field of a log event.\n\nBe careful if you are modifying your log events (for example, by using a `remap`\ntransform) and removing the message field while doing additional parsing on it, as this\ncould lead to the encoding emitting empty strings for the given event.",
              "type": "object",
              "required": [
                "codec"
              ],
              "properties": {
                "codec": {
                  "title": "No encoding.",
                  "description": "This encoding uses the `message` field of a log event.\n\nBe careful if you are modifying your log events (for example, by using a `remap`\ntransform) and removing the message field while doing additional parsing on it, as this\ncould lead to the encoding emitting empty strings for the given event.",
                  "const": "raw_message"
                }
              }
            },
            {
              "title": "Plain text encoding.",
              "description": "This encoding uses the `message` field of a log event. For metrics, it uses an\nencoding that resembles the Prometheus export format.\n\nBe careful if you are modifying your log events (for example, by using a `remap`\ntransform) and removing the message field while doing additional parsing on it, as this\ncould lead to the encoding emitting empty strings for the given event.",
              "allOf": [
                {
                  "description": "Config used to build a `TextSerializer`.",
                  "type": "object",
                  "properties": {
                    "metric_tag_values": {
                      "$ref": "#/$defs/codecs::MetricTagValues",
                      "title": "Controls how metric tag values are encoded.",
                      "description": "When set to `single`, only the last non-bare value of tags are displayed with the\nmetric.  When set to `full`, all metric tags are exposed as separate assignments.",
                      "default": "single"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "title": "Plain text encoding.",
                      "description": "This encoding uses the `message` field of a log event. For metrics, it uses an\nencoding that resembles the Prometheus export format.\n\nBe careful if you are modifying your log events (for example, by using a `remap`\ntransform) and removing the message field while doing additional parsing on it, as this\ncould lead to the encoding emitting empty strings for the given event.",
                      "const": "text"
                    }
                  }
                }
              ]
            }
          ]
        },
        {
          "description": "Transformations to prepare an event for serialization.",
          "type": "object",
          "properties": {
            "except_fields": {
              "description": "List of fields that are excluded from the encoded event.",
              "default": null,
              "type": [
                "array",
                "null"
              ],
              "items": {
                "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
              }
            },
            "only_fields": {
              "description": "List of fields that are included in the encoded event.",
              "default": null,
              "type": [
                "array",
                "null"
              ],
              "items": {
                "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
              }
            },
            "timestamp_format": {
              "description": "Format used for timestamp fields.",
              "default": null,
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "The format in which a timestamp should be represented.",
                  "oneOf": [
                    {
                      "description": "Represent the timestamp as a Unix timestamp.",
                      "const": "unix"
                    },
                    {
                      "description": "Represent the timestamp as a RFC 3339 timestamp.",
                      "const": "rfc3339"
                    },
                    {
                      "description": "Represent the timestamp as a Unix timestamp in milliseconds.",
                      "const": "unix_ms"
                    },
                    {
                      "description": "Represent the timestamp as a Unix timestamp in microseconds",
                      "const": "unix_us"
                    },
                    {
                      "description": "Represent the timestamp as a Unix timestamp in nanoseconds.",
                      "const": "unix_ns"
                    },
                    {
                      "description": "Represent the timestamp as a Unix timestamp in floating point.",
                      "const": "unix_float"
                    }
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "vector::codecs::encoding::config::EncodingConfigWithFraming": {
      "description": "Encoding configuration.",
      "type": "object",
      "required": [
        "encoding"
      ],
      "properties": {
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "framing": {
          "description": "Framing configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Framing configuration.",
              "oneOf": [
                {
                  "description": "Event data is not delimited at all.",
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "description": "Event data is not delimited at all.",
                      "const": "bytes"
                    }
                  }
                },
                {
                  "description": "Event data is delimited by a single ASCII (7-bit) character.",
                  "allOf": [
                    {
                      "description": "Config used to build a `CharacterDelimitedEncoder`.",
                      "type": "object",
                      "required": [
                        "character_delimited"
                      ],
                      "properties": {
                        "character_delimited": {
                          "description": "Options for the character delimited encoder.",
                          "type": "object",
                          "required": [
                            "delimiter"
                          ],
                          "properties": {
                            "delimiter": {
                              "description": "The ASCII (7-bit) character that delimits byte sequences.",
                              "type": "integer",
                              "maximum": 255.0,
                              "minimum": 0.0
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "method"
                      ],
                      "properties": {
                        "method": {
                          "description": "Event data is delimited by a single ASCII (7-bit) character.",
                          "const": "character_delimited"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Event data is prefixed with its length in bytes.",
                  "description": "The prefix is a 32-bit unsigned integer, little endian.",
                  "allOf": [
                    {
                      "description": "Config used to build a `LengthDelimitedEncoder`.",
                      "type": "object",
                      "required": [
                        "length_delimited"
                      ],
                      "properties": {
                        "length_delimited": {
                          "$ref": "#/$defs/codecs::common::length_delimited::LengthDelimitedCoderOptions",
                          "description": "Options for the length delimited decoder."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "method"
                      ],
                      "properties": {
                        "method": {
                          "title": "Event data is prefixed with its length in bytes.",
                          "description": "The prefix is a 32-bit unsigned integer, little endian.",
                          "const": "length_delimited"
                        }
                      }
                    }
                  ]
                },
                {
                  "description": "Event data is delimited by a newline (LF) character.",
                  "type": "object",
                  "required": [
                    "method"
                  ],
                  "properties": {
                    "method": {
                      "description": "Event data is delimited by a newline (LF) character.",
                      "const": "newline_delimited"
                    }
                  }
                }
              ]
            }
          ]
        }
      }
    },
    "vector::codecs::encoding::transformer::Transformer": {
      "description": "Transformations to prepare an event for serialization.",
      "type": "object",
      "properties": {
        "except_fields": {
          "description": "List of fields that are excluded from the encoded event.",
          "default": null,
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
          }
        },
        "only_fields": {
          "description": "List of fields that are included in the encoded event.",
          "default": null,
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
          }
        },
        "timestamp_format": {
          "description": "Format used for timestamp fields.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "The format in which a timestamp should be represented.",
              "oneOf": [
                {
                  "description": "Represent the timestamp as a Unix timestamp.",
                  "const": "unix"
                },
                {
                  "description": "Represent the timestamp as a RFC 3339 timestamp.",
                  "const": "rfc3339"
                },
                {
                  "description": "Represent the timestamp as a Unix timestamp in milliseconds.",
                  "const": "unix_ms"
                },
                {
                  "description": "Represent the timestamp as a Unix timestamp in microseconds",
                  "const": "unix_us"
                },
                {
                  "description": "Represent the timestamp as a Unix timestamp in nanoseconds.",
                  "const": "unix_ns"
                },
                {
                  "description": "Represent the timestamp as a Unix timestamp in floating point.",
                  "const": "unix_float"
                }
              ]
            }
          ]
        }
      }
    },
    "vector::conditions::AnyCondition": {
      "title": "An event matching condition.",
      "description": "Many methods exist for matching events, such as using a VRL expression, a Datadog Search query string,\nor hard-coded matchers like \"must be a metric\" or \"fields A, B, and C must match these constraints\".\n\nAs VRL is the most common way to apply conditions to events, this type provides a shortcut to define VRL expressions\ndirectly in the configuration by passing the VRL expression as a string:\n\n```toml\ncondition = '.message == \"hooray\"'\n```\n\nWhen other condition types are required, they can be specified with an enum-style notation:\n\n```toml\ncondition.type = 'datadog_search'\ncondition.source = 'NOT \"foo\"'\n```",
      "oneOf": [
        {
          "description": "A [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
          "type": "string"
        },
        {
          "title": "An event matching condition.",
          "description": "A fully-specified condition.",
          "oneOf": [
            {
              "description": "Matches an event if it is a log.",
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Matches an event if it is a log.",
                  "const": "is_log"
                }
              }
            },
            {
              "description": "Matches an event if it is a metric.",
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Matches an event if it is a metric.",
                  "const": "is_metric"
                }
              }
            },
            {
              "description": "Matches an event if it is a trace.",
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Matches an event if it is a trace.",
                  "const": "is_trace"
                }
              }
            },
            {
              "description": "Matches an event with a [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
              "allOf": [
                {
                  "description": "A condition that uses the [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions) against an event.",
                  "type": "object",
                  "required": [
                    "source"
                  ],
                  "properties": {
                    "runtime": {
                      "description": "The runtime to use for executing VRL code.",
                      "default": "ast",
                      "type": "string"
                    },
                    "source": {
                      "description": "The VRL boolean expression.",
                      "type": "string"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Matches an event with a [Vector Remap Language](https://vector.dev/docs/reference/vrl) (VRL) [boolean expression](https://vector.dev/docs/reference/vrl#boolean-expressions).",
                      "const": "vrl"
                    }
                  }
                }
              ]
            },
            {
              "description": "Matches an event with a [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query.",
              "allOf": [
                {
                  "description": "A condition that uses the [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query syntax against an event.",
                  "type": "object",
                  "required": [
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "description": "The query string.",
                      "type": "string"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Matches an event with a [Datadog Search](https://docs.datadoghq.com/logs/explorer/search_syntax/) query.",
                      "const": "datadog_search"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::config::TestInput": {
      "title": "A unit test input.",
      "description": "An input describes not only the type of event to insert, but also which transform within the\nconfiguration to insert it to.",
      "type": "object",
      "required": [
        "insert_at"
      ],
      "properties": {
        "insert_at": {
          "description": "The name of the transform to insert the input event to.",
          "type": "string"
        },
        "log_fields": {
          "title": "The set of log fields to use when creating a log input event.",
          "description": "Only relevant when `type` is `log`.",
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": {
            "description": "Value for a log field.",
            "oneOf": [
              {
                "description": "A string.",
                "type": "string"
              },
              {
                "description": "An integer.",
                "type": "integer",
                "maximum": 9007199254740990.0,
                "minimum": -9007199254740990.0
              },
              {
                "description": "A floating-point number.",
                "type": "number",
                "maximum": 9007199254740990.0,
                "minimum": -9007199254740990.0
              },
              {
                "description": "A boolean.",
                "type": "boolean"
              }
            ]
          }
        },
        "metric": {
          "title": "The metric to use as an input event.",
          "description": "Only relevant when `type` is `metric`.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "A metric.",
              "allOf": [
                {
                  "description": "Metrics series.",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "tags": {
                          "description": "Tags for a metric series.",
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "description": "Tags for a metric series.",
                              "type": "object",
                              "additionalProperties": {
                                "description": "Tag values for a metric series.  This may be empty, a single value, or a set of values. This is\nused to provide the storage for `TagValueSet`.",
                                "oneOf": [
                                  {
                                    "description": "This represents a set containing no value.",
                                    "const": "Empty"
                                  },
                                  {
                                    "description": "This represents a set containing a single value. This is stored separately to avoid the\noverhead of allocating a hash table for the common case of a single value for a tag.",
                                    "type": "object",
                                    "required": [
                                      "Single"
                                    ],
                                    "properties": {
                                      "Single": {
                                        "description": "A single tag value, either a bare tag or a value.",
                                        "oneOf": [
                                          {
                                            "description": "Bare tag value.",
                                            "type": "null"
                                          },
                                          {
                                            "description": "Tag value containing a string.",
                                            "type": "string"
                                          }
                                        ]
                                      }
                                    }
                                  },
                                  {
                                    "description": "This holds an actual set of values. This variant will be automatically created when a single\nvalue is added to, and reduced down to a single value when the length is reduced to 1.  An\nindex set is used for this set, as it preserves the insertion order of the contained\nelements. This allows us to retrieve the last element inserted which in turn allows us to\nemulate the set having a single value.",
                                    "type": "object",
                                    "required": [
                                      "Set"
                                    ],
                                    "properties": {
                                      "Set": {
                                        "type": "array",
                                        "items": {
                                          "description": "A single tag value, either a bare tag or a value.",
                                          "oneOf": [
                                            {
                                              "description": "Bare tag value.",
                                              "type": "null"
                                            },
                                            {
                                              "description": "Tag value containing a string.",
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "uniqueItems": true
                                      }
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "description": "Metric name.",
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "title": "The name of the metric.",
                          "description": "This would typically be a name for the metric itself, unrelated to where the metric\noriginates from. For example, if the metric represented the amount of used system memory, it\nmay be called `memory.used`.",
                          "type": "string"
                        },
                        "namespace": {
                          "title": "The namespace of the metric.",
                          "description": "Namespace represents a grouping for a metric where the name itself may otherwise be too\ngeneric. For example, while the name of a metric may be `memory.used` for the amount of used\nsystem memory, the namespace could differentiate that by being `system` for the total amount\nof used memory across the system, or `vector` for the amount of used system memory specific\nto Vector, and so on.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  ]
                },
                {
                  "description": "Metric data.",
                  "allOf": [
                    {
                      "type": "object",
                      "required": [
                        "kind"
                      ],
                      "properties": {
                        "kind": {
                          "$ref": "#/$defs/vector_core::event::metric::MetricKind",
                          "title": "Metric kind.",
                          "description": "Metrics can be either absolute or incremental. Absolute metrics represent a sort of \"last write wins\" scenario,\nwhere the latest absolute value seen is meant to be the actual metric value.  In contrast, and perhaps intuitively,\nincremental metrics are meant to be additive, such that we don't know what total value of the metric is, but we know\nthat we'll be adding or subtracting the given value from it.\n\nGenerally speaking, most metrics storage systems deal with incremental updates. A notable exception is Prometheus,\nwhich deals with, and expects, absolute values from clients."
                        }
                      }
                    },
                    {
                      "description": "Metric time.",
                      "type": "object",
                      "properties": {
                        "interval_ms": {
                          "title": "The interval, in milliseconds, of this metric.",
                          "description": "Intervals represent the time window over which this metric applies, and is generally only\nused for tracking rates (change over time) on counters.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 4294967295.0,
                          "minimum": 1.0
                        },
                        "timestamp": {
                          "title": "The timestamp of when the metric was created.",
                          "description": "Metrics may sometimes have no timestamp, or have no meaningful value if the metric is an\naggregation or transformed heavily enough from its original form such that the original\ntimestamp would not represent a meaningful value.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    },
                    {
                      "$ref": "#/$defs/vector_core::event::metric::value::MetricValue",
                      "description": "Metric value.\nContainer for the actual value of a metric."
                    }
                  ]
                }
              ]
            }
          ]
        },
        "source": {
          "title": "The vrl expression to generate the input event.",
          "description": "Only relevant when `type` is `vrl`.",
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "title": "The type of the input event.",
          "description": "Can be either `raw`, `vrl`, `log`, or `metric.",
          "default": "raw",
          "type": "string"
        },
        "value": {
          "title": "The raw string value to use as the input event.",
          "description": "Use this only when the input event should be a raw event (i.e. unprocessed/undecoded log\nevent) and when the input type is set to `raw`.",
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "vector::config::dot_graph::GraphConfig": {
      "title": "Extra graph configuration",
      "description": "Configure output for component when generated with graph command",
      "type": "object",
      "properties": {
        "node_attributes": {
          "title": "Node attributes to add to this component's node in resulting graph",
          "description": "They are added to the node as provided",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "vector::config::sink::SinkOuter<alloc::string::String>": {
      "description": "Fully resolved sink component.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "inputs"
          ],
          "properties": {
            "buffer": {
              "title": "Configures the buffering behavior for this sink.",
              "description": "More information about the individual buffer types, and buffer behavior, can be found in the\n[Buffering Model][buffering_model] section.\n\n[buffering_model]: /docs/about/under-the-hood/architecture/buffering-model/",
              "default": {
                "type": "memory",
                "max_events": 500,
                "when_full": "block"
              },
              "oneOf": [
                {
                  "description": "A single stage buffer topology.",
                  "oneOf": [
                    {
                      "title": "Events are buffered in memory.",
                      "description": "This is more performant, but less durable. Data will be lost if Vector is restarted\nforcefully or crashes.",
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "max_events": {
                          "description": "The maximum number of events allowed in the buffer.",
                          "default": 500,
                          "type": "integer",
                          "maximum": 9007199254740990.0,
                          "minimum": 1.0
                        },
                        "type": {
                          "title": "Events are buffered in memory.",
                          "description": "This is more performant, but less durable. Data will be lost if Vector is restarted\nforcefully or crashes.",
                          "const": "memory"
                        },
                        "when_full": {
                          "description": "Event handling behavior when a buffer is full.",
                          "default": "block",
                          "oneOf": [
                            {
                              "title": "Wait for free space in the buffer.",
                              "description": "This applies backpressure up the topology, signalling that sources should slow down\nthe acceptance/consumption of events. This means that while no data is lost, data will pile\nup at the edge.",
                              "const": "block"
                            },
                            {
                              "title": "Drops the event instead of waiting for free space in buffer.",
                              "description": "The event will be intentionally dropped. This mode is typically used when performance is the\nhighest priority, and it is preferable to temporarily lose events rather than cause a\nslowdown in the acceptance/consumption of events.",
                              "const": "drop_newest"
                            },
                            {
                              "title": "Overflows to the next stage in the buffer topology.",
                              "description": "If the current buffer stage is full, attempt to send this event to the next buffer stage.\nThat stage may also be configured overflow, and so on, but ultimately the last stage in a\nbuffer topology must use one of the other handling behaviors. This means that next stage may\npotentially be able to buffer the event, but it may also block or drop the event.\n\nThis mode can only be used when two or more buffer stages are configured.",
                              "const": "overflow"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "title": "Events are buffered on disk.",
                      "description": "This is less performant, but more durable. Data that has been synchronized to disk will not\nbe lost if Vector is restarted forcefully or crashes.\n\nData is synchronized to disk every 500ms.",
                      "type": "object",
                      "required": [
                        "max_size",
                        "type"
                      ],
                      "properties": {
                        "max_size": {
                          "title": "The maximum size of the buffer on disk.",
                          "description": "Must be at least ~256 megabytes (268435488 bytes).",
                          "type": "integer",
                          "maximum": 9007199254740990.0,
                          "minimum": 268435488.0
                        },
                        "type": {
                          "title": "Events are buffered on disk.",
                          "description": "This is less performant, but more durable. Data that has been synchronized to disk will not\nbe lost if Vector is restarted forcefully or crashes.\n\nData is synchronized to disk every 500ms.",
                          "const": "disk"
                        },
                        "when_full": {
                          "description": "Event handling behavior when a buffer is full.",
                          "default": "block",
                          "oneOf": [
                            {
                              "title": "Wait for free space in the buffer.",
                              "description": "This applies backpressure up the topology, signalling that sources should slow down\nthe acceptance/consumption of events. This means that while no data is lost, data will pile\nup at the edge.",
                              "const": "block"
                            },
                            {
                              "title": "Drops the event instead of waiting for free space in buffer.",
                              "description": "The event will be intentionally dropped. This mode is typically used when performance is the\nhighest priority, and it is preferable to temporarily lose events rather than cause a\nslowdown in the acceptance/consumption of events.",
                              "const": "drop_newest"
                            },
                            {
                              "title": "Overflows to the next stage in the buffer topology.",
                              "description": "If the current buffer stage is full, attempt to send this event to the next buffer stage.\nThat stage may also be configured overflow, and so on, but ultimately the last stage in a\nbuffer topology must use one of the other handling behaviors. This means that next stage may\npotentially be able to buffer the event, but it may also block or drop the event.\n\nThis mode can only be used when two or more buffer stages are configured.",
                              "const": "overflow"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                {
                  "description": "A chained buffer topology.",
                  "type": "array",
                  "items": {
                    "description": "A specific type of buffer stage.",
                    "oneOf": [
                      {
                        "title": "Events are buffered in memory.",
                        "description": "This is more performant, but less durable. Data will be lost if Vector is restarted\nforcefully or crashes.",
                        "type": "object",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "max_events": {
                            "description": "The maximum number of events allowed in the buffer.",
                            "default": 500,
                            "type": "integer",
                            "maximum": 9007199254740990.0,
                            "minimum": 1.0
                          },
                          "type": {
                            "title": "Events are buffered in memory.",
                            "description": "This is more performant, but less durable. Data will be lost if Vector is restarted\nforcefully or crashes.",
                            "const": "memory"
                          },
                          "when_full": {
                            "description": "Event handling behavior when a buffer is full.",
                            "default": "block",
                            "oneOf": [
                              {
                                "title": "Wait for free space in the buffer.",
                                "description": "This applies backpressure up the topology, signalling that sources should slow down\nthe acceptance/consumption of events. This means that while no data is lost, data will pile\nup at the edge.",
                                "const": "block"
                              },
                              {
                                "title": "Drops the event instead of waiting for free space in buffer.",
                                "description": "The event will be intentionally dropped. This mode is typically used when performance is the\nhighest priority, and it is preferable to temporarily lose events rather than cause a\nslowdown in the acceptance/consumption of events.",
                                "const": "drop_newest"
                              },
                              {
                                "title": "Overflows to the next stage in the buffer topology.",
                                "description": "If the current buffer stage is full, attempt to send this event to the next buffer stage.\nThat stage may also be configured overflow, and so on, but ultimately the last stage in a\nbuffer topology must use one of the other handling behaviors. This means that next stage may\npotentially be able to buffer the event, but it may also block or drop the event.\n\nThis mode can only be used when two or more buffer stages are configured.",
                                "const": "overflow"
                              }
                            ]
                          }
                        }
                      },
                      {
                        "title": "Events are buffered on disk.",
                        "description": "This is less performant, but more durable. Data that has been synchronized to disk will not\nbe lost if Vector is restarted forcefully or crashes.\n\nData is synchronized to disk every 500ms.",
                        "type": "object",
                        "required": [
                          "max_size",
                          "type"
                        ],
                        "properties": {
                          "max_size": {
                            "title": "The maximum size of the buffer on disk.",
                            "description": "Must be at least ~256 megabytes (268435488 bytes).",
                            "type": "integer",
                            "maximum": 9007199254740990.0,
                            "minimum": 268435488.0
                          },
                          "type": {
                            "title": "Events are buffered on disk.",
                            "description": "This is less performant, but more durable. Data that has been synchronized to disk will not\nbe lost if Vector is restarted forcefully or crashes.\n\nData is synchronized to disk every 500ms.",
                            "const": "disk"
                          },
                          "when_full": {
                            "description": "Event handling behavior when a buffer is full.",
                            "default": "block",
                            "oneOf": [
                              {
                                "title": "Wait for free space in the buffer.",
                                "description": "This applies backpressure up the topology, signalling that sources should slow down\nthe acceptance/consumption of events. This means that while no data is lost, data will pile\nup at the edge.",
                                "const": "block"
                              },
                              {
                                "title": "Drops the event instead of waiting for free space in buffer.",
                                "description": "The event will be intentionally dropped. This mode is typically used when performance is the\nhighest priority, and it is preferable to temporarily lose events rather than cause a\nslowdown in the acceptance/consumption of events.",
                                "const": "drop_newest"
                              },
                              {
                                "title": "Overflows to the next stage in the buffer topology.",
                                "description": "If the current buffer stage is full, attempt to send this event to the next buffer stage.\nThat stage may also be configured overflow, and so on, but ultimately the last stage in a\nbuffer topology must use one of the other handling behaviors. This means that next stage may\npotentially be able to buffer the event, but it may also block or drop the event.\n\nThis mode can only be used when two or more buffer stages are configured.",
                                "const": "overflow"
                              }
                            ]
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "graph": {
              "$ref": "#/$defs/vector::config::dot_graph::GraphConfig",
              "title": "Extra graph configuration",
              "description": "Configure output for component when generated with graph command",
              "default": {
                "node_attributes": {}
              }
            },
            "healthcheck": {
              "description": "Healthcheck configuration.",
              "default": {
                "enabled": true,
                "uri": null
              },
              "type": "object",
              "properties": {
                "enabled": {
                  "description": "Whether or not to check the health of the sink when Vector starts up.",
                  "type": "boolean"
                },
                "uri": {
                  "$ref": "#/$defs/core::option::Option%3Cvector::sinks::util::uri::UriSerde%3E",
                  "title": "The full URI to make HTTP healthcheck requests to.",
                  "description": "This must be a valid URI, which requires at least the scheme and host. All other\ncomponents -- port, path, etc -- are allowed as well.",
                  "format": "uri",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            },
            "healthcheck_uri": {
              "$ref": "#/$defs/core::option::Option%3Cvector::sinks::util::uri::UriSerde%3E",
              "title": "The full URI to make HTTP healthcheck requests to.",
              "description": "This must be a valid URI, which requires at least the scheme and host. All other\ncomponents -- port, path, etc -- are allowed as well.",
              "deprecated": true,
              "format": "uri",
              "type": [
                "string",
                "null"
              ]
            },
            "inputs": {
              "$ref": "#/$defs/vector_common::id::Inputs%3Calloc::string::String%3E",
              "title": "A list of upstream [source][sources] or [transform][transforms] IDs.",
              "description": "Wildcards (`*`) are supported.\n\nSee [configuration][configuration] for more info.\n\n[sources]: <https://vector.dev/docs/reference/configuration/sources/>\n[transforms]: <https://vector.dev/docs/reference/configuration/transforms/>\n[configuration]: <https://vector.dev/docs/reference/configuration/>"
            },
            "proxy": {
              "$ref": "#/$defs/vector_core::config::proxy::ProxyConfig",
              "title": "Proxy configuration.",
              "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
              "default": {}
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::Sinks",
          "description": "Configurable sinks in Vector."
        }
      ]
    },
    "vector::config::source::SourceOuter": {
      "description": "Fully resolved source component.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "graph": {
              "$ref": "#/$defs/vector::config::dot_graph::GraphConfig",
              "title": "Extra graph configuration",
              "description": "Configure output for component when generated with graph command",
              "default": {
                "node_attributes": {}
              }
            },
            "proxy": {
              "$ref": "#/$defs/vector_core::config::proxy::ProxyConfig",
              "title": "Proxy configuration.",
              "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
              "default": {}
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sources::Sources",
          "description": "Configurable sources in Vector."
        }
      ]
    },
    "vector::config::transform::TransformOuter<alloc::string::String>": {
      "description": "Fully resolved transform component.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "inputs"
          ],
          "properties": {
            "graph": {
              "$ref": "#/$defs/vector::config::dot_graph::GraphConfig",
              "title": "Extra graph configuration",
              "description": "Configure output for component when generated with graph command",
              "default": {
                "node_attributes": {}
              }
            },
            "inputs": {
              "$ref": "#/$defs/vector_common::id::Inputs%3Calloc::string::String%3E",
              "title": "A list of upstream [source][sources] or [transform][transforms] IDs.",
              "description": "Wildcards (`*`) are supported.\n\nSee [configuration][configuration] for more info.\n\n[sources]: <https://vector.dev/docs/reference/configuration/sources/>\n[transforms]: <https://vector.dev/docs/reference/configuration/transforms/>\n[configuration]: <https://vector.dev/docs/reference/configuration/>"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::transforms::Transforms",
          "description": "Configurable transforms in Vector."
        }
      ]
    },
    "vector::config::unit_test::unit_test_components::UnitTestSinkConfig": {
      "description": "Configuration for the `unit_test` sink.",
      "type": "object",
      "required": [
        "test_name",
        "transform_ids"
      ],
      "properties": {
        "test_name": {
          "description": "Name of the test that this sink is being used for.",
          "type": "string"
        },
        "transform_ids": {
          "description": "List of names of the transform/branch associated with this sink.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "vector::config::unit_test::unit_test_components::UnitTestSourceConfig": {
      "description": "Configuration for the `unit_test` source.",
      "type": "object"
    },
    "vector::config::unit_test::unit_test_components::UnitTestStreamSinkConfig": {
      "description": "Configuration for the `unit_test_stream` sink.",
      "type": "object"
    },
    "vector::config::unit_test::unit_test_components::UnitTestStreamSourceConfig": {
      "description": "Configuration for the `unit_test_stream` source.",
      "type": "object"
    },
    "vector::enrichment_tables::file::FileConfig": {
      "description": "Configuration for the `file` enrichment table.",
      "type": "object",
      "required": [
        "file"
      ],
      "properties": {
        "file": {
          "description": "File-specific settings.",
          "type": "object",
          "required": [
            "encoding",
            "path"
          ],
          "properties": {
            "encoding": {
              "description": "File encoding configuration.",
              "oneOf": [
                {
                  "title": "Decodes the file as a [CSV][csv] (comma-separated values) file.",
                  "description": "[csv]: <https://wikipedia.org/wiki/Comma-separated_values>",
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "delimiter": {
                      "description": "The delimiter used to separate fields in each row of the CSV file.",
                      "default": ",",
                      "type": "string",
                      "maxLength": 1,
                      "minLength": 1
                    },
                    "include_headers": {
                      "title": "Whether or not the file contains column headers.",
                      "description": "When set to `true`, the first row of the CSV file will be read as the header row, and\nthe values will be used for the names of each column. This is the default behavior.\n\nWhen set to `false`, columns are referred to by their numerical index.",
                      "default": true,
                      "type": "boolean"
                    },
                    "type": {
                      "title": "Decodes the file as a [CSV][csv] (comma-separated values) file.",
                      "description": "[csv]: <https://wikipedia.org/wiki/Comma-separated_values>",
                      "const": "csv"
                    }
                  }
                }
              ]
            },
            "path": {
              "$ref": "#/$defs/stdlib::PathBuf",
              "title": "The path of the enrichment table file.",
              "description": "Currently, only [CSV][csv] files are supported.\n\n[csv]: <https://en.wikipedia.org/wiki/Comma-separated_values>"
            }
          }
        },
        "schema": {
          "title": "Key/value pairs representing mapped log field names and types.",
          "description": "This is used to coerce log fields from strings into their proper types. The available types are listed in the `Types` list below.\n\nTimestamp coercions need to be prefaced with `timestamp|`, for example `\"timestamp|%F\"`. Timestamp specifiers can use either of the following:\n\n1. One of the built-in-formats listed in the `Timestamp Formats` table below.\n2. The [time format specifiers][chrono_fmt] from Rust’s `chrono` library.\n\n### Types\n\n- **`bool`**\n- **`string`**\n- **`float`**\n- **`integer`**\n- **`date`**\n- **`timestamp`** (see the table below for formats)\n\n### Timestamp Formats\n\n| Format               | Description                                                                      | Example                          |\n|----------------------|----------------------------------------------------------------------------------|----------------------------------|\n| `%F %T`              | `YYYY-MM-DD HH:MM:SS`                                                            | `2020-12-01 02:37:54`            |\n| `%v %T`              | `DD-Mmm-YYYY HH:MM:SS`                                                           | `01-Dec-2020 02:37:54`           |\n| `%FT%T`              | [ISO 8601][iso8601]/[RFC 3339][rfc3339], without time zone                       | `2020-12-01T02:37:54`            |\n| `%FT%TZ`             | [ISO 8601][iso8601]/[RFC 3339][rfc3339], UTC                                     | `2020-12-01T09:37:54Z`           |\n| `%+`                 | [ISO 8601][iso8601]/[RFC 3339][rfc3339], UTC, with time zone                     | `2020-12-01T02:37:54-07:00`      |\n| `%a, %d %b %Y %T`    | [RFC 822][rfc822]/[RFC 2822][rfc2822], without time zone                         | `Tue, 01 Dec 2020 02:37:54`      |\n| `%a %b %e %T %Y`     | [ctime][ctime] format                                                            | `Tue Dec 1 02:37:54 2020`        |\n| `%s`                 | [UNIX timestamp][unix_ts]                                                        | `1606790274`                     |\n| `%a %d %b %T %Y`     | [date][date] command, without time zone                                          | `Tue 01 Dec 02:37:54 2020`       |\n| `%a %d %b %T %Z %Y`  | [date][date] command, with time zone                                             | `Tue 01 Dec 02:37:54 PST 2020`   |\n| `%a %d %b %T %z %Y`  | [date][date] command, with numeric time zone                                     | `Tue 01 Dec 02:37:54 -0700 2020` |\n| `%a %d %b %T %#z %Y` | [date][date] command, with numeric time zone (minutes can be missing or present) | `Tue 01 Dec 02:37:54 -07 2020`   |\n\n[date]: <https://man7.org/linux/man-pages/man1/date.1.html>\n[ctime]: <https://www.cplusplus.com/reference/ctime>\n[unix_ts]: <https://en.wikipedia.org/wiki/Unix_time>\n[rfc822]: <https://tools.ietf.org/html/rfc822#section-5>\n[rfc2822]: <https://tools.ietf.org/html/rfc2822#section-3.3>\n[iso8601]: <https://en.wikipedia.org/wiki/ISO_8601>\n[rfc3339]: <https://tools.ietf.org/html/rfc3339>\n[chrono_fmt]: <https://docs.rs/chrono/latest/chrono/format/strftime/index.html#specifiers>",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "vector::enrichment_tables::geoip::GeoipConfig": {
      "description": "Configuration for the `geoip` enrichment table.",
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "locale": {
          "title": "The locale to use when querying the database.",
          "description": "MaxMind includes localized versions of some of the fields within their database, such as\ncountry name. This setting can control which of those localized versions are returned by the\ntransform.\n\nMore information on which portions of the geolocation data are localized, and what languages\nare available, can be found [here][locale_docs].\n\n[locale_docs]: <https://support.maxmind.com/hc/en-us/articles/4414877149467-IP-Geolocation-Data#h_01FRRGRYTGZB29ERDBZCX3MR8Q>",
          "default": "en",
          "type": "string"
        },
        "path": {
          "title": "Path to the [MaxMind GeoIP2][geoip2] or [GeoLite2 binary city database file][geolite2]\n(**GeoLite2-City.mmdb**).",
          "description": "Other databases, such as the country database, are not supported.\n`mmdb` enrichment table can be used for other databases.\n\n[geoip2]: <https://dev.maxmind.com/geoip/geoip2/downloadable>\n[geolite2]: <https://dev.maxmind.com/geoip/geoip2/geolite2/#Download_Access>",
          "type": "string"
        }
      }
    },
    "vector::enrichment_tables::mmdb::MmdbConfig": {
      "description": "Configuration for the `mmdb` enrichment table.",
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "path": {
          "title": "Path to the [MaxMind][maxmind] database",
          "description": "[maxmind]: <https://maxmind.com>",
          "type": "string"
        }
      }
    },
    "vector::gcp::GcpAuthConfig": {
      "description": "Configuration of the authentication strategy for interacting with GCP services.",
      "type": "object",
      "properties": {
        "api_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "An [API key][gcp_api_key].",
          "description": "Either an API key or a path to a service account credentials JSON file can be specified.\n\nIf both are unset, the `GOOGLE_APPLICATION_CREDENTIALS` environment variable is checked for a filename. If no\nfilename is named, an attempt is made to fetch an instance service account for the compute instance the program is\nrunning on. If this is not on a GCE instance, then you must define it with an API key or service account\ncredentials JSON file.\n\n[gcp_api_key]: <https://cloud.google.com/docs/authentication/api-keys>"
        },
        "credentials_path": {
          "title": "Path to a [service account][gcp_service_account_credentials] credentials JSON file.",
          "description": "Either an API key or a path to a service account credentials JSON file can be specified.\n\nIf both are unset, the `GOOGLE_APPLICATION_CREDENTIALS` environment variable is checked for a filename. If no\nfilename is named, an attempt is made to fetch an instance service account for the compute instance the program is\nrunning on. If this is not on a GCE instance, then you must define it with an API key or service account\ncredentials JSON file.\n\n[gcp_service_account_credentials]: <https://cloud.google.com/docs/authentication/production#manually>",
          "type": [
            "string",
            "null"
          ]
        },
        "skip_authentication": {
          "description": "Skip all authentication handling. For use with integration tests only.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "vector::http::KeepaliveConfig": {
      "description": "Configuration of HTTP server keepalive parameters.",
      "type": "object",
      "properties": {
        "max_connection_age_jitter_factor": {
          "title": "The factor by which to jitter the `max_connection_age_secs` value.",
          "description": "A value of 0.1 means that the actual duration will be between 90% and 110% of the\nspecified maximum duration.",
          "default": 0.1,
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0
        },
        "max_connection_age_secs": {
          "title": "The maximum amount of time a connection may exist before it is closed by sending\na `Connection: close` header on the HTTP response. Set this to a large value like\n`100000000` to \"disable\" this feature",
          "description": "Only applies to HTTP/0.9, HTTP/1.0, and HTTP/1.1 requests.\n\nA random jitter configured by `max_connection_age_jitter_factor` is added\nto the specified duration to spread out connection storms.",
          "default": 300,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::internal_events::file::FileInternalMetricsConfig": {
      "description": "Configuration of internal metrics for file-based components.",
      "type": "object",
      "properties": {
        "include_file_tag": {
          "title": "Whether or not to include the \"file\" tag on the component's corresponding internal metrics.",
          "description": "This is useful for distinguishing between different files while monitoring. However, the tag's\ncardinality is unbounded.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "vector::kafka::KafkaAuthConfig": {
      "description": "Kafka authentication configuration.",
      "type": "object",
      "properties": {
        "sasl": {
          "description": "Configuration for SASL authentication when interacting with Kafka.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configuration for SASL authentication when interacting with Kafka.",
              "type": "object",
              "properties": {
                "enabled": {
                  "title": "Enables SASL authentication.",
                  "description": "Only `PLAIN`- and `SCRAM`-based mechanisms are supported when configuring SASL authentication using `sasl.*`. For\nother mechanisms, `librdkafka_options.*` must be used directly to configure other `librdkafka`-specific values.\nIf using `sasl.kerberos.*` as an example, where `*` is `service.name`, `principal`, `kinit.md`, etc., then\n`librdkafka_options.*` as a result becomes `librdkafka_options.sasl.kerberos.service.name`,\n`librdkafka_options.sasl.kerberos.principal`, etc.\n\nSee the [librdkafka documentation](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md) for details.\n\nSASL authentication is not supported on Windows.",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "mechanism": {
                  "description": "The SASL mechanism to use.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "password": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
                  "description": "The SASL password."
                },
                "username": {
                  "description": "The SASL username.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          ]
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::providers::http::HttpConfig": {
      "description": "Configuration for the `http` provider.",
      "default": {
        "url": null,
        "request": {
          "headers": {}
        },
        "poll_interval_secs": 30
      },
      "allOf": [
        {
          "type": "object",
          "properties": {
            "poll_interval_secs": {
              "description": "How often to poll the provider, in seconds.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "proxy": {
              "$ref": "#/$defs/vector_core::config::proxy::ProxyConfig",
              "title": "Proxy configuration.",
              "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
              "default": {}
            },
            "request": {
              "description": "Request settings.",
              "type": "object",
              "properties": {
                "headers": {
                  "description": "HTTP headers to add to the request.",
                  "default": {},
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            },
            "url": {
              "description": "URL for the HTTP provider.",
              "type": [
                "string",
                "null"
              ],
              "format": "uri"
            }
          }
        },
        {
          "description": "TLS configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/vector_core::tls::settings::TlsConfig"
            }
          ]
        }
      ]
    },
    "vector::secrets::aws_secrets_manager::AwsSecretsManagerBackend": {
      "description": "Configuration for the `aws_secrets_manager` secrets backend.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "secret_id"
          ],
          "properties": {
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "secret_id": {
              "description": "ID of the secret to resolve.",
              "type": "string"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        }
      ]
    },
    "vector::secrets::directory::DirectoryBackend": {
      "description": "Configuration for the `directory` secrets backend.",
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "path": {
          "$ref": "#/$defs/stdlib::PathBuf",
          "description": "Directory path to read secrets from."
        },
        "remove_trailing_whitespace": {
          "description": "Remove trailing whitespace from file contents.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "vector::secrets::exec::ExecBackend": {
      "description": "Configuration for the `exec` secrets backend.",
      "type": "object",
      "required": [
        "command"
      ],
      "properties": {
        "command": {
          "title": "Command arguments to execute.",
          "description": "The path to the script or binary must be the first argument.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timeout": {
          "description": "The timeout, in seconds, to wait for the command to complete.",
          "default": 5,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::secrets::file::FileBackend": {
      "description": "Configuration for the `file` secrets backend.",
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "path": {
          "$ref": "#/$defs/stdlib::PathBuf",
          "description": "File path to read secrets from."
        }
      }
    },
    "vector::secrets::test::TestBackend": {
      "description": "Configuration for the `test` secrets backend.",
      "type": "object",
      "required": [
        "replacement"
      ],
      "properties": {
        "replacement": {
          "description": "Fixed value to replace all secrets with.",
          "type": "string"
        }
      }
    },
    "vector::sinks::Sinks": {
      "description": "Configurable sinks in Vector.",
      "oneOf": [
        {
          "description": "Send events to AMQP 0.9.1 compatible brokers like RabbitMQ.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::amqp::config::AmqpSinkConfig",
              "title": "Configuration for the `amqp` sink.",
              "description": "Supports AMQP version 0.9.1"
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Send events to AMQP 0.9.1 compatible brokers like RabbitMQ.",
                  "const": "amqp"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log and metric event data to AppSignal.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::appsignal::config::AppsignalConfig",
              "description": "Configuration for the `appsignal` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log and metric event data to AppSignal.",
                  "const": "appsignal"
                }
              }
            }
          ]
        },
        {
          "description": "Publish log events to AWS CloudWatch Logs.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_cloudwatch_logs::config::CloudwatchLogsSinkConfig",
              "description": "Configuration for the `aws_cloudwatch_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish log events to AWS CloudWatch Logs.",
                  "const": "aws_cloudwatch_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Publish metric events to AWS CloudWatch Metrics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_cloudwatch_metrics::CloudWatchMetricsSinkConfig",
              "description": "Configuration for the `aws_cloudwatch_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish metric events to AWS CloudWatch Metrics.",
                  "const": "aws_cloudwatch_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Publish logs to AWS Kinesis Data Firehose topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_kinesis::firehose::config::KinesisFirehoseSinkConfig",
              "description": "Configuration for the `aws_kinesis_firehose` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish logs to AWS Kinesis Data Firehose topics.",
                  "const": "aws_kinesis_firehose"
                }
              }
            }
          ]
        },
        {
          "description": "Publish logs to AWS Kinesis Streams topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_kinesis::streams::config::KinesisStreamsSinkConfig",
              "description": "Configuration for the `aws_kinesis_streams` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish logs to AWS Kinesis Streams topics.",
                  "const": "aws_kinesis_streams"
                }
              }
            }
          ]
        },
        {
          "description": "Store observability events in the AWS S3 object storage system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_s3::config::S3SinkConfig",
              "description": "Configuration for the `aws_s3` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Store observability events in the AWS S3 object storage system.",
                  "const": "aws_s3"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability events to AWS Simple Notification Service topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_s_s::sns::config::SnsSinkConfig",
              "description": "Configuration for the `aws_sns` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability events to AWS Simple Notification Service topics.",
                  "const": "aws_sns"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability events to AWS Simple Queue Service topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::aws_s_s::sqs::config::SqsSinkConfig",
              "description": "Configuration for the `aws_sqs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability events to AWS Simple Queue Service topics.",
                  "const": "aws_sqs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log events to Axiom.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::axiom::AxiomConfig",
              "description": "Configuration for the `axiom` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log events to Axiom.",
                  "const": "axiom"
                }
              }
            }
          ]
        },
        {
          "description": "Store your observability data in Azure Blob Storage.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::azure_blob::config::AzureBlobSinkConfig",
              "description": "Configuration for the `azure_blob` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Store your observability data in Azure Blob Storage.",
                  "const": "azure_blob"
                }
              }
            }
          ]
        },
        {
          "description": "Publish log events to the Azure Monitor Logs service.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::azure_monitor_logs::config::AzureMonitorLogsConfig",
              "description": "Configuration for the `azure_monitor_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish log events to the Azure Monitor Logs service.",
                  "const": "azure_monitor_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Send observability events nowhere, which can be useful for debugging purposes.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::blackhole::config::BlackholeConfig",
              "description": "Configuration for the `blackhole` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Send observability events nowhere, which can be useful for debugging purposes.",
                  "const": "blackhole"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log data to a ClickHouse database.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::clickhouse::config::ClickhouseConfig",
              "description": "Configuration for the `clickhouse` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log data to a ClickHouse database.",
                  "const": "clickhouse"
                }
              }
            }
          ]
        },
        {
          "description": "Display observability events in the console, which can be useful for debugging purposes.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::console::config::ConsoleSinkConfig",
              "description": "Configuration for the `console` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Display observability events in the console, which can be useful for debugging purposes.",
                  "const": "console"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log data to a Databend database.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::databend::config::DatabendConfig",
              "description": "Configuration for the `databend` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log data to a Databend database.",
                  "const": "databend"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability events to the Datadog Events API.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::datadog::events::config::DatadogEventsConfig",
              "description": "Configuration for the `datadog_events` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability events to the Datadog Events API.",
                  "const": "datadog_events"
                }
              }
            }
          ]
        },
        {
          "description": "Publish log events to Datadog.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::datadog::logs::config::DatadogLogsConfig",
              "description": "Configuration for the `datadog_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish log events to Datadog.",
                  "const": "datadog_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Publish metric events to Datadog.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::datadog::metrics::config::DatadogMetricsConfig",
              "description": "Configuration for the `datadog_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish metric events to Datadog.",
                  "const": "datadog_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Publish trace events to Datadog.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::datadog::traces::config::DatadogTracesConfig",
              "description": "Configuration for the `datadog_traces` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish trace events to Datadog.",
                  "const": "datadog_traces"
                }
              }
            }
          ]
        },
        {
          "description": "Index observability events in Elasticsearch.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::elasticsearch::config::ElasticsearchConfig",
              "description": "Configuration for the `elasticsearch` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Index observability events in Elasticsearch.",
                  "const": "elasticsearch"
                }
              }
            }
          ]
        },
        {
          "description": "Output observability events into files.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::file::FileSinkConfig",
              "description": "Configuration for the `file` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Output observability events into files.",
                  "const": "file"
                }
              }
            }
          ]
        },
        {
          "description": "Store unstructured log events in Google Chronicle.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::gcp_chronicle::chronicle_unstructured::ChronicleUnstructuredConfig",
              "description": "Configuration for the `gcp_chronicle_unstructured` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Store unstructured log events in Google Chronicle.",
                  "const": "gcp_chronicle_unstructured"
                }
              }
            }
          ]
        },
        {
          "description": "Store observability events in GCP Cloud Storage.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::gcp::cloud_storage::GcsSinkConfig",
              "description": "Configuration for the `gcp_cloud_storage` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Store observability events in GCP Cloud Storage.",
                  "const": "gcp_cloud_storage"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability events to GCP's Pub/Sub messaging system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::gcp::pubsub::PubsubConfig",
              "description": "Configuration for the `gcp_pubsub` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability events to GCP's Pub/Sub messaging system.",
                  "const": "gcp_pubsub"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver logs to GCP's Cloud Operations suite.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::gcp::stackdriver::logs::config::StackdriverConfig",
              "description": "Configuration for the `gcp_stackdriver_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver logs to GCP's Cloud Operations suite.",
                  "const": "gcp_stackdriver_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metrics to GCP's Cloud Monitoring system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::gcp::stackdriver::metrics::config::StackdriverConfig",
              "description": "Configuration for the `gcp_stackdriver_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metrics to GCP's Cloud Monitoring system.",
                  "const": "gcp_stackdriver_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Ingest metrics data into GreptimeDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::greptimedb::metrics::config::GreptimeDBConfig",
              "description": "Configuration for the `greptimedb` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Ingest metrics data into GreptimeDB.",
                  "const": "greptimedb"
                }
              }
            }
          ]
        },
        {
          "description": "Ingest logs data into GreptimeDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::greptimedb::logs::config::GreptimeDBLogsConfig",
              "description": "Configuration for the `greptimedb_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Ingest logs data into GreptimeDB.",
                  "const": "greptimedb_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Ingest metrics data into GreptimeDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::greptimedb::metrics::config::GreptimeDBMetricsConfig",
              "description": "Configuration items for GreptimeDB"
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Ingest metrics data into GreptimeDB.",
                  "const": "greptimedb_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log events to Honeycomb.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::honeycomb::config::HoneycombConfig",
              "description": "Configuration for the `honeycomb` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log events to Honeycomb.",
                  "const": "honeycomb"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver observability event data to an HTTP server.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::http::config::HttpSinkConfig",
              "description": "Configuration for the `http` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver observability event data to an HTTP server.",
                  "const": "http"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log event data to Humio.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::humio::logs::HumioLogsConfig",
              "description": "Configuration for the `humio_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log event data to Humio.",
                  "const": "humio_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metric event data to Humio.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::humio::metrics::HumioMetricsConfig",
              "description": "Configuration for the `humio_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metric event data to Humio.",
                  "const": "humio_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log event data to InfluxDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::influxdb::logs::InfluxDbLogsConfig",
              "description": "Configuration for the `influxdb_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log event data to InfluxDB.",
                  "const": "influxdb_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metric event data to InfluxDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::influxdb::metrics::InfluxDbConfig",
              "description": "Configuration for the `influxdb_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metric event data to InfluxDB.",
                  "const": "influxdb_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability event data to Apache Kafka topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::kafka::config::KafkaSinkConfig",
              "description": "Configuration for the `kafka` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability event data to Apache Kafka topics.",
                  "const": "kafka"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log event data to LogDNA.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::mezmo::LogdnaConfig",
              "description": "Configuration for the `logdna` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log event data to LogDNA.",
                  "const": "logdna"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log event data to the Loki aggregation system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::loki::config::LokiConfig",
              "description": "Configuration for the `loki` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log event data to the Loki aggregation system.",
                  "const": "loki"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log event data to Mezmo.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::mezmo::MezmoConfig",
              "description": "Configuration for the `mezmo` (formerly `logdna`) sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log event data to Mezmo.",
                  "const": "mezmo"
                }
              }
            }
          ]
        },
        {
          "description": "This component is missing a description.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::mqtt::config::MqttSinkConfig",
              "description": "Configuration for the `mqtt` sink"
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "This component is missing a description.",
                  "const": "mqtt"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability data to subjects on the NATS messaging system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::nats::config::NatsSinkConfig",
              "description": "Configuration for the `nats` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability data to subjects on the NATS messaging system.",
                  "const": "nats"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver events to New Relic.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::new_relic::config::NewRelicConfig",
              "description": "Configuration for the `new_relic` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver events to New Relic.",
                  "const": "new_relic"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver OTLP data over HTTP.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::opentelemetry::OpenTelemetryConfig",
              "description": "Configuration for the `OpenTelemetry` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver OTLP data over HTTP.",
                  "const": "opentelemetry"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log events to Papertrail from SolarWinds.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::papertrail::PapertrailConfig",
              "description": "Configuration for the `papertrail` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log events to Papertrail from SolarWinds.",
                  "const": "papertrail"
                }
              }
            }
          ]
        },
        {
          "description": "Expose metric events on a Prometheus compatible endpoint.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::prometheus::exporter::PrometheusExporterConfig",
              "description": "Configuration for the `prometheus_exporter` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Expose metric events on a Prometheus compatible endpoint.",
                  "const": "prometheus_exporter"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metric data to a Prometheus remote write endpoint.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::prometheus::remote_write::config::RemoteWriteConfig",
              "description": "Configuration for the `prometheus_remote_write` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metric data to a Prometheus remote write endpoint.",
                  "const": "prometheus_remote_write"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability events to Apache Pulsar topics.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::pulsar::config::PulsarSinkConfig",
              "description": "Configuration for the `pulsar` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability events to Apache Pulsar topics.",
                  "const": "pulsar"
                }
              }
            }
          ]
        },
        {
          "description": "Publish observability data to Redis.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::redis::config::RedisSinkConfig",
              "description": "Configuration for the `redis` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish observability data to Redis.",
                  "const": "redis"
                }
              }
            }
          ]
        },
        {
          "description": "Publish log events to Sematext.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::sematext::logs::SematextLogsConfig",
              "description": "Configuration for the `sematext_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish log events to Sematext.",
                  "const": "sematext_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Publish metric events to Sematext.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::sematext::metrics::SematextMetricsConfig",
              "description": "Configuration for the `sematext_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Publish metric events to Sematext.",
                  "const": "sematext_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver logs to a remote socket endpoint.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::socket::SocketSinkConfig",
              "description": "Configuration for the `socket` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver logs to a remote socket endpoint.",
                  "const": "socket"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver log data to Splunk's HTTP Event Collector.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::splunk_hec::logs::config::HecLogsSinkConfig",
              "description": "Configuration for the `splunk_hec_logs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver log data to Splunk's HTTP Event Collector.",
                  "const": "splunk_hec_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metric data to Splunk's HTTP Event Collector.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::splunk_hec::metrics::config::HecMetricsSinkConfig",
              "description": "Configuration of the `splunk_hec_metrics` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metric data to Splunk's HTTP Event Collector.",
                  "const": "splunk_hec_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver metric data to a StatsD aggregator.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::statsd::config::StatsdSinkConfig",
              "description": "Configuration for the `statsd` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver metric data to a StatsD aggregator.",
                  "const": "statsd"
                }
              }
            }
          ]
        },
        {
          "description": "Unit test.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::config::unit_test::unit_test_components::UnitTestSinkConfig",
              "description": "Configuration for the `unit_test` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Unit test.",
                  "const": "unit_test"
                }
              }
            }
          ]
        },
        {
          "description": "Unit test stream.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::config::unit_test::unit_test_components::UnitTestStreamSinkConfig",
              "description": "Configuration for the `unit_test_stream` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Unit test stream.",
                  "const": "unit_test_stream"
                }
              }
            }
          ]
        },
        {
          "description": "Relay observability data to a Vector instance.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::vector::config::VectorConfig",
              "description": "Configuration for the `vector` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Relay observability data to a Vector instance.",
                  "const": "vector"
                }
              }
            }
          ]
        },
        {
          "description": "WebHDFS.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::webhdfs::config::WebHdfsConfig",
              "description": "Configuration for the `webhdfs` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "WebHDFS.",
                  "const": "webhdfs"
                }
              }
            }
          ]
        },
        {
          "description": "Deliver observability event data to a websocket listener.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sinks::websocket::config::WebSocketSinkConfig",
              "description": "Configuration for the `websocket` sink."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deliver observability event data to a websocket listener.",
                  "const": "websocket"
                }
              }
            }
          ]
        }
      ]
    },
    "vector::sinks::amqp::config::AmqpSinkConfig": {
      "title": "Configuration for the `amqp` sink.",
      "description": "Supports AMQP version 0.9.1",
      "allOf": [
        {
          "type": "object",
          "required": [
            "encoding",
            "exchange"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "exchange": {
              "$ref": "#/$defs/vector::template::Template",
              "description": "The exchange to publish messages to."
            },
            "properties": {
              "title": "Configure the AMQP message properties.",
              "description": "AMQP message properties.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "title": "Configure the AMQP message properties.",
                  "description": "AMQP properties configuration.",
                  "type": "object",
                  "properties": {
                    "content_encoding": {
                      "description": "Content-Encoding for the AMQP messages.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "content_type": {
                      "description": "Content-Type for the AMQP messages.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "expiration_ms": {
                      "description": "Expiration for AMQP messages (in milliseconds)",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                }
              ]
            },
            "routing_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "description": "Template used to generate a routing key which corresponds to a queue binding."
            }
          }
        },
        {
          "$ref": "#/$defs/vector::amqp::AmqpConfig",
          "description": "AMQP connection options."
        }
      ]
    },
    "vector::sinks::appsignal::config::AppsignalConfig": {
      "description": "Configuration for the `appsignal` sink.",
      "type": "object",
      "required": [
        "push_api_key"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": 450000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 100,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "gzip"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "description": "The URI for the AppSignal API to send data to.",
          "default": "https://appsignal-endpoint.net",
          "type": "string",
          "format": "uri"
        },
        "push_api_key": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "A valid app-level AppSignal Push API key."
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sinks::aws_cloudwatch_logs::config::CloudwatchLogsSinkConfig": {
      "description": "Configuration for the `aws_cloudwatch_logs` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "encoding",
            "group_name",
            "stream_name"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "assume_role": {
              "title": "The ARN of an [IAM role][iam_role] to assume at startup.",
              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
              "deprecated": true,
              "type": [
                "string",
                "null"
              ]
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 1048576,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 10000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none"
            },
            "create_missing_group": {
              "title": "Dynamically create a [log group][log_group] if it does not already exist.",
              "description": "This ignores `create_missing_stream` directly after creating the group and creates\nthe first stream.\n\n[log_group]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html>",
              "default": true,
              "type": "boolean"
            },
            "create_missing_stream": {
              "title": "Dynamically create a [log stream][log_stream] if it does not already exist.",
              "description": "[log_stream]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html>",
              "default": true,
              "type": "boolean"
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "group_name": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "The [group name][group_name] of the target CloudWatch Logs stream.",
              "description": "[group_name]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html>"
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::http::RequestConfig",
              "description": "Outbound HTTP request settings.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                },
                "headers": {}
              }
            },
            "retention": {
              "description": "Retention policy configuration for AWS CloudWatch Log Group",
              "default": {
                "enabled": false
              },
              "type": "object",
              "properties": {
                "days": {
                  "description": "If retention is enabled, the number of days to retain logs for.",
                  "default": 0,
                  "type": "integer",
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "enabled": {
                  "description": "Whether or not to set a retention policy when creating a new Log Group.",
                  "default": false,
                  "type": "boolean"
                }
              }
            },
            "stream_name": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "The [stream name][stream_name] of the target CloudWatch Logs stream.",
              "description": "There can only be one writer to a log stream at a time. If multiple instances are writing to\nthe same log group, the stream name must include an identifier that is guaranteed to be\nunique per instance.\n\n[stream_name]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html>"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "title": "The [AWS region][aws_region] of the target service.",
          "description": "[aws_region]: <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html>"
        }
      ]
    },
    "vector::sinks::aws_cloudwatch_metrics::CloudWatchMetricsSinkConfig": {
      "description": "Configuration for the `aws_cloudwatch_metrics` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "default_namespace"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "assume_role": {
              "title": "The ARN of an [IAM role][iam_role] to assume at startup.",
              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
              "deprecated": true,
              "type": [
                "string",
                "null"
              ]
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 20,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none"
            },
            "default_namespace": {
              "title": "The default [namespace][namespace] to use for metrics that do not have one.",
              "description": "Metrics with the same name can only be differentiated by their namespace, and not all\nmetrics have their own namespace.\n\n[namespace]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace>",
              "type": "string"
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 150,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 150,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "title": "The [AWS region][aws_region] of the target service.",
          "description": "[aws_region]: <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html>"
        }
      ]
    },
    "vector::sinks::aws_kinesis::config::KinesisSinkBaseConfig": {
      "description": "Base configuration for the `aws_kinesis_` sinks.\nThe actual specific sink configuration types should either wrap this in a newtype wrapper,\nor should extend it in a new struct with `serde(flatten)`.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "encoding",
            "stream_name"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none"
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "partition_key_field": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::ConfigValuePath%3E",
              "title": "The log field used as the Kinesis record’s partition key value.",
              "description": "If not specified, a unique partition key is generated for each Kinesis record."
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "request_retry_partial": {
              "description": "Whether or not to retry successful requests containing partial failures.",
              "default": false,
              "type": "boolean"
            },
            "stream_name": {
              "title": "The [stream name][stream_name] of the target Kinesis Firehose delivery stream.",
              "description": "[stream_name]: <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html>",
              "type": "string"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        }
      ]
    },
    "vector::sinks::aws_kinesis::firehose::config::KinesisFirehoseSinkConfig": {
      "description": "Configuration for the `aws_kinesis_firehose` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 4194304,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 500,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::aws_kinesis::config::KinesisSinkBaseConfig",
          "description": "Base configuration for the `aws_kinesis_` sinks.\nThe actual specific sink configuration types should either wrap this in a newtype wrapper,\nor should extend it in a new struct with `serde(flatten)`."
        }
      ]
    },
    "vector::sinks::aws_kinesis::streams::config::KinesisStreamsSinkConfig": {
      "description": "Configuration for the `aws_kinesis_streams` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 5000000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 500,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::aws_kinesis::config::KinesisSinkBaseConfig",
          "description": "Base configuration for the `aws_kinesis_` sinks.\nThe actual specific sink configuration types should either wrap this in a newtype wrapper,\nor should extend it in a new struct with `serde(flatten)`."
        }
      ]
    },
    "vector::sinks::aws_s3::config::S3SinkConfig": {
      "description": "Configuration for the `aws_s3` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "bucket"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::BulkSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "bucket": {
              "title": "The S3 bucket name.",
              "description": "This must not include a leading `s3://` or a trailing `/`.",
              "type": "string"
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.\n\nSome cloud storage API clients and browsers handle decompression transparently, so\ndepending on how they are accessed, files may not always appear to be compressed.",
              "default": "gzip"
            },
            "filename_append_uuid": {
              "title": "Whether or not to append a UUID v4 token to the end of the object key.",
              "description": "The UUID is appended to the timestamp portion of the object key, such that if the object key\ngenerated is `date=2022-07-18/1658176486`, setting this field to `true` results\nin an object key that looks like `date=2022-07-18/1658176486-30f6652c-71da-4f9f-800d-a1189c47c547`.\n\nThis ensures there are no name collisions, and can be useful in high-volume workloads where\nobject keys must be unique.",
              "default": true,
              "type": "boolean"
            },
            "filename_extension": {
              "title": "The filename extension to use in the object key.",
              "description": "This overrides setting the extension based on the configured `compression`.",
              "type": [
                "string",
                "null"
              ]
            },
            "filename_time_format": {
              "title": "The timestamp format for the time component of the object key.",
              "description": "By default, object keys are appended with a timestamp that reflects when the objects are\nsent to S3, such that the resulting object key is functionally equivalent to joining the key\nprefix with the formatted timestamp, such as `date=2022-07-18/1658176486`.\n\nThis would represent a `key_prefix` set to `date=%F/` and the timestamp of Mon Jul 18 2022\n20:34:44 GMT+0000, with the `filename_time_format` being set to `%s`, which renders\ntimestamps in seconds since the Unix epoch.\n\nSupports the common [`strftime`][chrono_strftime_specifiers] specifiers found in most\nlanguages.\n\nWhen set to an empty string, no timestamp is appended to the key prefix.\n\n[chrono_strftime_specifiers]: <https://docs.rs/chrono/latest/chrono/format/strftime/index.html#specifiers>",
              "default": "%s",
              "type": "string"
            },
            "force_path_style": {
              "title": "Specifies which addressing style to use.",
              "description": "This controls if the bucket name is in the hostname or part of the URL.",
              "default": true,
              "type": "boolean"
            },
            "key_prefix": {
              "title": "A prefix to apply to all object keys.",
              "description": "Prefixes are useful for partitioning objects, such as by creating an object key that\nstores objects under a particular directory. If using a prefix for this purpose, it must end\nin `/` to act as a directory path. A trailing `/` is **not** automatically added.",
              "default": "date=%F",
              "type": "string"
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "timezone": {
              "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
              "default": null
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "description": "Per-operation configuration when writing objects to S3.",
          "type": "object",
          "properties": {
            "acl": {
              "title": "Canned ACL to apply to the created objects.",
              "description": "For more information, see [Canned ACL][canned_acl].\n\n[canned_acl]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl>",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "title": "S3 Canned ACLs.",
                  "description": "For more information, see [Canned ACL][canned_acl].\n\n[canned_acl]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl>",
                  "oneOf": [
                    {
                      "title": "Bucket/object are private.",
                      "description": "The bucket/object owner is granted the `FULL_CONTROL` permission, and no one else has\naccess.\n\nThis is the default.",
                      "const": "private"
                    },
                    {
                      "title": "Bucket/object can be read publicly.",
                      "description": "The bucket/object owner is granted the `FULL_CONTROL` permission, and anyone in the\n`AllUsers` grantee group is granted the `READ` permission.",
                      "const": "public-read"
                    },
                    {
                      "title": "Bucket/object can be read and written publicly.",
                      "description": "The bucket/object owner is granted the `FULL_CONTROL` permission, and anyone in the\n`AllUsers` grantee group is granted the `READ` and `WRITE` permissions.\n\nThis is generally not recommended.",
                      "const": "public-read-write"
                    },
                    {
                      "title": "Bucket/object are private, and readable by EC2.",
                      "description": "The bucket/object owner is granted the `FULL_CONTROL` permission, and the AWS EC2 service is\ngranted the `READ` permission for the purpose of reading Amazon Machine Image (AMI) bundles\nfrom the given bucket.",
                      "const": "aws-exec-read"
                    },
                    {
                      "title": "Bucket/object can be read by authenticated users.",
                      "description": "The bucket/object owner is granted the `FULL_CONTROL` permission, and anyone in the\n`AuthenticatedUsers` grantee group is granted the `READ` permission.",
                      "const": "authenticated-read"
                    },
                    {
                      "title": "Object is private, except to the bucket owner.",
                      "description": "The object owner is granted the `FULL_CONTROL` permission, and the bucket owner is granted the `READ` permission.\n\nOnly relevant when specified for an object: this canned ACL is otherwise ignored when\nspecified for a bucket.",
                      "const": "bucket-owner-read"
                    },
                    {
                      "title": "Object is semi-private.",
                      "description": "Both the object owner and bucket owner are granted the `FULL_CONTROL` permission.\n\nOnly relevant when specified for an object: this canned ACL is otherwise ignored when\nspecified for a bucket.",
                      "const": "bucket-owner-full-control"
                    },
                    {
                      "title": "Bucket can have logs written.",
                      "description": "The `LogDelivery` grantee group is granted `WRITE` and `READ_ACP` permissions.\n\nOnly relevant when specified for a bucket: this canned ACL is otherwise ignored when\nspecified for an object.\n\nFor more information about logs, see [Amazon S3 Server Access Logging][serverlogs].\n\n[serverlogs]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html>",
                      "const": "log-delivery-write"
                    }
                  ]
                }
              ]
            },
            "content_encoding": {
              "title": "Overrides what content encoding has been applied to the object.",
              "description": "Directly comparable to the `Content-Encoding` HTTP header.\n\nIf not specified, the compression scheme used dictates this value.",
              "type": [
                "string",
                "null"
              ]
            },
            "content_type": {
              "title": "Overrides the MIME type of the object.",
              "description": "Directly comparable to the `Content-Type` HTTP header.\n\nIf not specified, the compression scheme used dictates this value.\nWhen `compression` is set to `none`, the value `text/x-log` is used.",
              "type": [
                "string",
                "null"
              ]
            },
            "grant_full_control": {
              "title": "Grants `READ`, `READ_ACP`, and `WRITE_ACP` permissions on the created objects to the named [grantee].",
              "description": "This allows the grantee to read the created objects and their metadata, as well as read and\nmodify the ACL on the created objects.\n\n[grantee]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#specifying-grantee>",
              "type": [
                "string",
                "null"
              ]
            },
            "grant_read": {
              "title": "Grants `READ` permissions on the created objects to the named [grantee].",
              "description": "This allows the grantee to read the created objects and their metadata.\n\n[grantee]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#specifying-grantee>",
              "type": [
                "string",
                "null"
              ]
            },
            "grant_read_acp": {
              "title": "Grants `READ_ACP` permissions on the created objects to the named [grantee].",
              "description": "This allows the grantee to read the ACL on the created objects.\n\n[grantee]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#specifying-grantee>",
              "type": [
                "string",
                "null"
              ]
            },
            "grant_write_acp": {
              "title": "Grants `WRITE_ACP` permissions on the created objects to the named [grantee].",
              "description": "This allows the grantee to modify the ACL on the created objects.\n\n[grantee]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#specifying-grantee>",
              "type": [
                "string",
                "null"
              ]
            },
            "server_side_encryption": {
              "title": "AWS S3 Server-Side Encryption algorithms.",
              "description": "The Server-side Encryption algorithm used when storing these objects.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "title": "AWS S3 Server-Side Encryption algorithms.",
                  "description": "More information on each algorithm can be found in the [AWS documentation][aws_docs].\n\n[aws_docs]: <https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html>",
                  "oneOf": [
                    {
                      "title": "Each object is encrypted with AES-256 using a unique key.",
                      "description": "This corresponds to the `SSE-S3` option.",
                      "const": "AES256"
                    },
                    {
                      "title": "Each object is encrypted with AES-256 using keys managed by AWS KMS.",
                      "description": "Depending on whether or not a KMS key ID is specified, this corresponds either to the\n`SSE-KMS` option (keys generated/managed by KMS) or the `SSE-C` option (keys generated by\nthe customer, managed by KMS).",
                      "const": "aws:kms"
                    }
                  ]
                }
              ]
            },
            "ssekms_key_id": {
              "title": "Specifies the ID of the AWS Key Management Service (AWS KMS) symmetrical customer managed\ncustomer master key (CMK) that is used for the created objects.",
              "description": "Only applies when `server_side_encryption` is configured to use KMS.\n\nIf not specified, Amazon S3 uses the AWS managed CMK in AWS to protect the data.",
              "type": [
                "string",
                "null"
              ]
            },
            "storage_class": {
              "title": "The storage class for the created objects.",
              "description": "See the [S3 Storage Classes][s3_storage_classes] for more details.\n\n[s3_storage_classes]: <https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html>",
              "default": "STANDARD",
              "oneOf": [
                {
                  "description": "Standard Redundancy.",
                  "const": "STANDARD"
                },
                {
                  "description": "Reduced Redundancy.",
                  "const": "REDUCED_REDUNDANCY"
                },
                {
                  "description": "Intelligent Tiering.",
                  "const": "INTELLIGENT_TIERING"
                },
                {
                  "description": "Infrequently Accessed.",
                  "const": "STANDARD_IA"
                },
                {
                  "description": "High Performance (single Availability zone).",
                  "const": "EXPRESS_ONEZONE"
                },
                {
                  "description": "Infrequently Accessed (single Availability zone).",
                  "const": "ONEZONE_IA"
                },
                {
                  "description": "Glacier Flexible Retrieval.",
                  "const": "GLACIER"
                },
                {
                  "description": "Glacier Instant Retrieval.",
                  "const": "GLACIER_IR"
                },
                {
                  "description": "Glacier Deep Archive.",
                  "const": "DEEP_ARCHIVE"
                }
              ]
            },
            "tags": {
              "description": "The tag-set for the object.",
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::aws_s_s::config::BaseSSSinkConfig": {
      "description": "Base Configuration `aws_s_s` for sns and sqs sink.",
      "type": "object",
      "required": [
        "encoding"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "assume_role": {
          "title": "The ARN of an [IAM role][iam_role] to assume at startup.",
          "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
          "deprecated": true,
          "type": [
            "string",
            "null"
          ]
        },
        "auth": {
          "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
          "description": "Configuration of the authentication strategy for interacting with AWS services.",
          "default": {
            "load_timeout_secs": null,
            "imds": {
              "max_attempts": 4,
              "connect_timeout_seconds": 1,
              "read_timeout_seconds": 1
            },
            "region": null
          }
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "message_deduplication_id": {
          "title": "The message deduplication ID value to allow AWS to identify duplicate messages.",
          "description": "This value is a template which should result in a unique string for each event. See the [AWS\ndocumentation][deduplication_id_docs] for more about how AWS does message deduplication.\n\n[deduplication_id_docs]: <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html>",
          "type": [
            "string",
            "null"
          ]
        },
        "message_group_id": {
          "title": "The tag that specifies that a message belongs to a specific message group.",
          "description": "Can be applied only to FIFO queues.",
          "type": [
            "string",
            "null"
          ]
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::aws_s_s::sns::config::SnsSinkConfig": {
      "description": "Configuration for the `aws_sns` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "topic_arn"
          ],
          "properties": {
            "topic_arn": {
              "description": "The ARN of the Amazon SNS topic to which messages are sent.",
              "type": "string",
              "format": "uri"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        },
        {
          "$ref": "#/$defs/vector::sinks::aws_s_s::config::BaseSSSinkConfig",
          "description": "Base Configuration `aws_s_s` for sns and sqs sink."
        }
      ]
    },
    "vector::sinks::aws_s_s::sqs::config::SqsSinkConfig": {
      "description": "Configuration for the `aws_sqs` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "queue_url"
          ],
          "properties": {
            "queue_url": {
              "description": "The URL of the Amazon SQS queue to which messages are sent.",
              "type": "string",
              "format": "uri"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        },
        {
          "$ref": "#/$defs/vector::sinks::aws_s_s::config::BaseSSSinkConfig",
          "description": "Base Configuration `aws_s_s` for sns and sqs sink."
        }
      ]
    },
    "vector::sinks::axiom::AxiomConfig": {
      "description": "Configuration for the `axiom` sink.",
      "type": "object",
      "required": [
        "dataset",
        "token"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "description": "Controls how acknowledgements are handled for this sink.",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "The batch settings for the sink.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "description": "The compression algorithm to use.",
          "default": "zstd"
        },
        "dataset": {
          "description": "The Axiom dataset to write to.",
          "type": "string"
        },
        "org_id": {
          "title": "The Axiom organization ID.",
          "description": "Only required when using personal tokens.",
          "type": [
            "string",
            "null"
          ]
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::http::RequestConfig",
          "description": "Outbound HTTP request settings.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            },
            "headers": {}
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
          "title": "The TLS settings for the connection.",
          "description": "Optional, constrains TLS settings for this sink."
        },
        "token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The Axiom API token."
        },
        "url": {
          "title": "URI of the Axiom endpoint to send data to.",
          "description": "Only required if not using Axiom Cloud.",
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        }
      }
    },
    "vector::sinks::azure_blob::config::AzureBlobSinkConfig": {
      "description": "Configuration for the `azure_blob` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "container_name"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::BulkSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "blob_append_uuid": {
              "title": "Whether or not to append a UUID v4 token to the end of the blob key.",
              "description": "The UUID is appended to the timestamp portion of the object key, such that if the blob key\ngenerated is `date=2022-07-18/1658176486`, setting this field to `true` results\nin an blob key that looks like\n`date=2022-07-18/1658176486-30f6652c-71da-4f9f-800d-a1189c47c547`.\n\nThis ensures there are no name collisions, and can be useful in high-volume workloads where\nblob keys must be unique.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "blob_prefix": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "A prefix to apply to all blob keys.",
              "description": "Prefixes are useful for partitioning objects, such as by creating a blob key that\nstores blobs under a particular directory. If using a prefix for this purpose, it must end\nin `/` to act as a directory path. A trailing `/` is **not** automatically added.",
              "default": "blob/%F/"
            },
            "blob_time_format": {
              "title": "The timestamp format for the time component of the blob key.",
              "description": "By default, blob keys are appended with a timestamp that reflects when the blob are sent to\nAzure Blob Storage, such that the resulting blob key is functionally equivalent to joining\nthe blob prefix with the formatted timestamp, such as `date=2022-07-18/1658176486`.\n\nThis would represent a `blob_prefix` set to `date=%F/` and the timestamp of Mon Jul 18 2022\n20:34:44 GMT+0000, with the `filename_time_format` being set to `%s`, which renders\ntimestamps in seconds since the Unix epoch.\n\nSupports the common [`strftime`][chrono_strftime_specifiers] specifiers found in most\nlanguages.\n\nWhen set to an empty string, no timestamp is appended to the blob prefix.\n\n[chrono_strftime_specifiers]: <https://docs.rs/chrono/latest/chrono/format/strftime/index.html#specifiers>",
              "type": [
                "string",
                "null"
              ]
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.\n\nSome cloud storage API clients and browsers handle decompression transparently, so\ndepending on how they are accessed, files may not always appear to be compressed.",
              "default": "gzip"
            },
            "connection_string": {
              "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
              "title": "The Azure Blob Storage Account connection string.",
              "description": "Authentication with an access key or shared access signature (SAS)\nare supported authentication methods. If using a non-account SAS,\nhealthchecks will fail and will need to be disabled by setting\n`healthcheck.enabled` to `false` for this sink\n\nWhen generating an account SAS, the following are the minimum required option\nsettings for Vector to access blob storage and pass a health check.\n| Option                 | Value              |\n| ---------------------- | ------------------ |\n| Allowed services       | Blob               |\n| Allowed resource types | Container & Object |\n| Allowed permissions    | Read & Create      |\n\nEither `storage_account`, or this field, must be specified."
            },
            "container_name": {
              "description": "The Azure Blob Storage Account container name.",
              "type": "string"
            },
            "endpoint": {
              "title": "The Azure Blob Storage Endpoint URL.",
              "description": "This is used to override the default blob storage endpoint URL in cases where you are using\ncredentials read from the environment/managed identities or access tokens without using an\nexplicit connection_string (which already explicitly supports overriding the blob endpoint\nURL).\n\nThis may only be used with `storage_account` and is ignored when used with\n`connection_string`.",
              "type": [
                "string",
                "null"
              ]
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 250,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 250,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "storage_account": {
              "title": "The Azure Blob Storage Account name.",
              "description": "Attempts to load credentials for the account in the following ways, in order:\n\n- read from environment variables ([more information][env_cred_docs])\n- looks for a [Managed Identity][managed_ident_docs]\n- uses the `az` CLI tool to get an access token ([more information][az_cli_docs])\n\nEither `connection_string`, or this field, must be specified.\n\n[env_cred_docs]: <https://docs.rs/azure_identity/latest/azure_identity/struct.EnvironmentCredential.html>\n[managed_ident_docs]: <https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview>\n[az_cli_docs]: <https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az-account-get-access-token>",
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::azure_monitor_logs::config::AzureMonitorLogsConfig": {
      "description": "Configuration for the `azure_monitor_logs` sink.",
      "type": "object",
      "required": [
        "customer_id",
        "log_type",
        "shared_key"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "azure_resource_id": {
          "title": "The [Resource ID][resource_id] of the Azure resource the data should be associated with.",
          "description": "[resource_id]: <https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api#request-headers>",
          "type": [
            "string",
            "null"
          ]
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "customer_id": {
          "title": "The [unique identifier][uniq_id] for the Log Analytics workspace.",
          "description": "[uniq_id]: <https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api#request-uri-parameters>",
          "type": "string"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "host": {
          "title": "[Alternative host][alt_host] for dedicated Azure regions.",
          "description": "[alt_host]: <https://docs.azure.cn/en-us/articles/guidance/developerdifferences#check-endpoints-in-azure>",
          "default": "ods.opinsights.azure.com",
          "type": "string"
        },
        "log_type": {
          "title": "The [record type][record_type] of the data that is being submitted.",
          "description": "Can only contain letters, numbers, and underscores (_), and may not exceed 100 characters.\n\n[record_type]: <https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api#request-headers>",
          "type": "string",
          "pattern": "[a-zA-Z0-9_]{1,100}"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "shared_key": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "title": "The [primary or the secondary key][shared_key] for the Log Analytics workspace.",
          "description": "[shared_key]: <https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api#authorization>"
        },
        "time_generated_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Use this option to customize the log field used as [`TimeGenerated`][1] in Azure.",
          "description": "The setting of `log_schema.timestamp_key`, usually `timestamp`, is used here by default.\nThis field should be used in rare cases where `TimeGenerated` should point to a specific log\nfield. For example, use this field to set the log field `source_timestamp` as holding the\nvalue that should be used as `TimeGenerated` on the Azure side.\n\n[1]: <https://learn.microsoft.com/en-us/azure/azure-monitor/logs/log-standard-columns#timegenerated>"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::blackhole::config::BlackholeConfig": {
      "description": "Configuration for the `blackhole` sink.",
      "default": {
        "print_interval_secs": 0,
        "rate": null
      },
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "print_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "title": "The interval between reporting a summary of activity.",
          "description": "Set to `0` (default) to disable reporting.",
          "default": 0
        },
        "rate": {
          "title": "The number of events, per second, that the sink is allowed to consume.",
          "description": "By default, there is no limit.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::sinks::clickhouse::config::ClickhouseConfig": {
      "description": "Configuration for the `clickhouse` sink.",
      "type": "object",
      "required": [
        "endpoint",
        "table"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "gzip"
        },
        "database": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "description": "The database that contains the table that data is inserted into."
        },
        "date_time_best_effort": {
          "description": "Sets `date_time_input_format` to `best_effort`, allowing ClickHouse to properly parse RFC3339/ISO 8601.",
          "default": false,
          "type": "boolean"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
          "description": "The endpoint of the ClickHouse server."
        },
        "format": {
          "title": "Data format.",
          "description": "The format to parse input data.",
          "default": "json_each_row",
          "oneOf": [
            {
              "description": "JSONEachRow.",
              "const": "json_each_row"
            },
            {
              "description": "JSONAsObject.",
              "const": "json_as_object"
            },
            {
              "description": "JSONAsString.",
              "const": "json_as_string"
            }
          ]
        },
        "insert_random_shard": {
          "description": "Sets `insert_distributed_one_random_shard`, allowing ClickHouse to insert data into a random shard when using Distributed Table Engine.",
          "default": false,
          "type": "boolean"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "skip_unknown_fields": {
          "title": "Sets `input_format_skip_unknown_fields`, allowing ClickHouse to discard fields not present in the table schema.",
          "description": "If left unspecified, use the default provided by the `ClickHouse` server.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "table": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The table that data is inserted into."
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::console::config::ConsoleSinkConfig": {
      "description": "Configuration for the `console` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "target": {
              "title": "The [standard stream][standard_streams] to write to.",
              "description": "[standard_streams]: <https://en.wikipedia.org/wiki/Standard_streams>",
              "default": "stdout",
              "oneOf": [
                {
                  "title": "Write output to [STDOUT][stdout].",
                  "description": "[stdout]: <https://en.wikipedia.org/wiki/Standard_streams#Standard_output_(stdout)>",
                  "const": "stdout"
                },
                {
                  "title": "Write output to [STDERR][stderr].",
                  "description": "[stderr]: <https://en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr)>",
                  "const": "stderr"
                }
              ]
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::databend::config::DatabendConfig": {
      "description": "Configuration for the `databend` sink.",
      "type": "object",
      "required": [
        "endpoint",
        "table"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E",
          "description": "The username and password to authenticate with. Overrides the username and password in DSN."
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "description": "Compression configuration.",
          "default": "none",
          "oneOf": [
            {
              "description": "No compression.",
              "const": "none"
            },
            {
              "title": "[Gzip][gzip] compression.",
              "description": "[gzip]: <https://www.gzip.org/>",
              "const": "gzip"
            }
          ]
        },
        "database": {
          "description": "The database that contains the table that data is inserted into. Overrides the database in DSN.",
          "type": [
            "string",
            "null"
          ]
        },
        "encoding": {
          "description": "Configures how events are encoded into raw bytes.",
          "default": {
            "codec": "json",
            "json": {
              "pretty": false
            }
          },
          "allOf": [
            {
              "description": "Serializer configuration for Databend.",
              "oneOf": [
                {
                  "title": "Encodes an event as a CSV message.",
                  "description": "This codec must be configured with fields to encode.",
                  "allOf": [
                    {
                      "$ref": "#/$defs/codecs::encoding::format::csv::CsvSerializerConfig",
                      "description": "Options for the CSV encoder."
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Encodes an event as a CSV message.",
                          "description": "This codec must be configured with fields to encode.",
                          "const": "csv"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Encodes an event as [JSON][json].",
                  "description": "[json]: <https://www.json.org/>",
                  "allOf": [
                    {
                      "$ref": "#/$defs/codecs::encoding::format::json::JsonSerializerConfig",
                      "description": "Encoding options specific to the Json serializer."
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Encodes an event as [JSON][json].",
                          "description": "[json]: <https://www.json.org/>",
                          "const": "json"
                        }
                      }
                    }
                  ]
                }
              ]
            },
            {
              "description": "Transformations to prepare an event for serialization.",
              "type": "object",
              "properties": {
                "except_fields": {
                  "description": "List of fields that are excluded from the encoded event.",
                  "default": null,
                  "type": [
                    "array",
                    "null"
                  ],
                  "items": {
                    "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
                  }
                },
                "only_fields": {
                  "description": "List of fields that are included in the encoded event.",
                  "default": null,
                  "type": [
                    "array",
                    "null"
                  ],
                  "items": {
                    "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
                  }
                },
                "timestamp_format": {
                  "description": "Format used for timestamp fields.",
                  "default": null,
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "description": "The format in which a timestamp should be represented.",
                      "oneOf": [
                        {
                          "description": "Represent the timestamp as a Unix timestamp.",
                          "const": "unix"
                        },
                        {
                          "description": "Represent the timestamp as a RFC 3339 timestamp.",
                          "const": "rfc3339"
                        },
                        {
                          "description": "Represent the timestamp as a Unix timestamp in milliseconds.",
                          "const": "unix_ms"
                        },
                        {
                          "description": "Represent the timestamp as a Unix timestamp in microseconds",
                          "const": "unix_us"
                        },
                        {
                          "description": "Represent the timestamp as a Unix timestamp in nanoseconds.",
                          "const": "unix_ns"
                        },
                        {
                          "description": "Represent the timestamp as a Unix timestamp in floating point.",
                          "const": "unix_float"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          ]
        },
        "endpoint": {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
          "description": "The DSN of the Databend server."
        },
        "missing_field_as": {
          "description": "Defines how missing fields are handled for NDJson.\nRefer to <https://docs.databend.com/sql/sql-reference/file-format-options#null_field_as>",
          "default": "NULL",
          "oneOf": [
            {
              "description": "Generates an error if a missing field is encountered.",
              "const": "ERROR"
            },
            {
              "description": "Interprets missing fields as NULL values. An error will be generated for non-nullable fields.",
              "const": "NULL"
            },
            {
              "description": "Uses the default value of the field for missing fields.",
              "const": "FIELD_DEFAULT"
            },
            {
              "description": "Uses the default value of the field's data type for missing fields.",
              "const": "TYPE_DEFAULT"
            }
          ]
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "table": {
          "description": "The table that data is inserted into.",
          "type": "string"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
          "description": "The TLS configuration to use when connecting to the Databend server.",
          "deprecated": true
        }
      }
    },
    "vector::sinks::datadog::LocalDatadogCommonConfig": {
      "description": "Shared configuration for Datadog sinks.\nContains the maximum set of common settings that applies to all DD sink components.",
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "default_api_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "The default Datadog [API key][api_key] to use in authentication of HTTP requests.",
          "description": "If an event has a Datadog [API key][api_key] set explicitly in its metadata, it takes\nprecedence over this setting.\n\nThis value can also be set by specifying the `DD_API_KEY` environment variable.\nThe value specified here takes precedence over the environment variable.\n\n[api_key]: <https://docs.datadoghq.com/api/?lang=bash#authentication>\n[global_options]: /docs/reference/configuration/global-options/#datadog"
        },
        "endpoint": {
          "title": "The endpoint to send observability data to.",
          "description": "The endpoint must contain an HTTP scheme, and may specify a hostname or IP\naddress and port. The API path should NOT be specified as this is handled by\nthe sink.\n\nIf set, overrides the `site` option.",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "site": {
          "title": "The Datadog [site][dd_site] to send observability data to.",
          "description": "This value can also be set by specifying the `DD_SITE` environment variable.\nThe value specified here takes precedence over the environment variable.\n\nIf not specified by the environment variable, a default value of\n`datadoghq.com` is taken.\n\n[dd_site]: <https://docs.datadoghq.com/getting_started/site>",
          "type": [
            "string",
            "null"
          ]
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E",
          "default": null
        }
      }
    },
    "vector::sinks::datadog::events::config::DatadogEventsConfig": {
      "description": "Configuration for the `datadog_events` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::datadog::LocalDatadogCommonConfig",
          "description": "Shared configuration for Datadog sinks.\nContains the maximum set of common settings that applies to all DD sink components."
        }
      ]
    },
    "vector::sinks::datadog::logs::config::DatadogLogsConfig": {
      "description": "Configuration for the `datadog_logs` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 4250000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 5.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "compression": {
              "$ref": "#/$defs/core::option::Option%3Cvector::sinks::util::buffer::compression::Compression%3E",
              "default": null
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
              "description": "Transformations to prepare an event for serialization.",
              "default": {}
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::http::RequestConfig",
              "description": "Outbound HTTP request settings.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                },
                "headers": {}
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::datadog::LocalDatadogCommonConfig",
          "description": "Shared configuration for Datadog sinks.\nContains the maximum set of common settings that applies to all DD sink components."
        }
      ]
    },
    "vector::sinks::datadog::metrics::config::DatadogMetricsConfig": {
      "description": "Configuration for the `datadog_metrics` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 100000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 2.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "default_namespace": {
              "title": "Sets the default namespace for any metrics sent.",
              "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with a period (`.`).",
              "default": null,
              "type": [
                "string",
                "null"
              ]
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::datadog::LocalDatadogCommonConfig",
          "description": "Shared configuration for Datadog sinks.\nContains the maximum set of common settings that applies to all DD sink components."
        }
      ]
    },
    "vector::sinks::datadog::traces::config::DatadogTracesConfig": {
      "description": "Configuration for the `datadog_traces` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 3000000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 10.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "compression": {
              "$ref": "#/$defs/core::option::Option%3Cvector::sinks::util::buffer::compression::Compression%3E",
              "default": null
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::sinks::datadog::LocalDatadogCommonConfig",
          "description": "Shared configuration for Datadog sinks.\nContains the maximum set of common settings that applies to all DD sink components."
        }
      ]
    },
    "vector::sinks::elasticsearch::config::ElasticsearchConfig": {
      "description": "Configuration for the `elasticsearch` sink.",
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "api_version": {
          "title": "The API version of Elasticsearch.",
          "description": "Amazon OpenSearch Serverless requires this option to be set to `auto` (the default).",
          "default": "auto",
          "oneOf": [
            {
              "title": "Auto-detect the API version.",
              "description": "If the [cluster state version endpoint][es_version] isn't reachable, a warning is logged to\nstdout, and the version is assumed to be V6 if the `suppress_type_name` option is set to\n`true`. Otherwise, the version is assumed to be V8. In the future, the sink instead\nreturns an error during configuration parsing, since a wrongly assumed version could lead to\nincorrect API calls.\n\n[es_version]: <https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html#cluster-state-api-path-params>",
              "const": "auto"
            },
            {
              "description": "Use the Elasticsearch 6.x API.",
              "const": "v6"
            },
            {
              "description": "Use the Elasticsearch 7.x API.",
              "const": "v7"
            },
            {
              "description": "Use the Elasticsearch 8.x API.",
              "const": "v8"
            }
          ]
        },
        "auth": {
          "description": "Elasticsearch Authentication strategies.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Elasticsearch Authentication strategies.",
              "oneOf": [
                {
                  "description": "HTTP Basic Authentication.",
                  "type": "object",
                  "required": [
                    "password",
                    "strategy",
                    "user"
                  ],
                  "properties": {
                    "password": {
                      "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                      "description": "Basic authentication password."
                    },
                    "strategy": {
                      "description": "HTTP Basic Authentication.",
                      "const": "basic"
                    },
                    "user": {
                      "description": "Basic authentication username.",
                      "type": "string"
                    }
                  }
                },
                {
                  "description": "Amazon OpenSearch Service-specific authentication.",
                  "allOf": [
                    {
                      "description": "Configuration of the authentication strategy for interacting with AWS services.",
                      "anyOf": [
                        {
                          "description": "Authenticate using a fixed access key and secret pair.",
                          "type": "object",
                          "required": [
                            "access_key_id",
                            "secret_access_key"
                          ],
                          "properties": {
                            "access_key_id": {
                              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                              "description": "The AWS access key ID."
                            },
                            "assume_role": {
                              "title": "The ARN of an [IAM role][iam_role] to assume.",
                              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "external_id": {
                              "title": "The optional unique external ID in conjunction with role to assume.",
                              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this will default to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "secret_access_key": {
                              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                              "description": "The AWS secret access key."
                            }
                          }
                        },
                        {
                          "title": "Authenticate using credentials stored in a file.",
                          "description": "Additionally, the specific credential profile to use can be set.\nThe file format must match the credentials file format outlined in\n<https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html>.",
                          "type": "object",
                          "required": [
                            "credentials_file"
                          ],
                          "properties": {
                            "credentials_file": {
                              "description": "Path to the credentials file.",
                              "type": "string"
                            },
                            "profile": {
                              "title": "The credentials profile to use.",
                              "description": "Used to select AWS credentials from a provided credentials file.",
                              "default": "default",
                              "type": "string"
                            }
                          }
                        },
                        {
                          "description": "Assume the given role ARN.",
                          "type": "object",
                          "required": [
                            "assume_role"
                          ],
                          "properties": {
                            "assume_role": {
                              "title": "The ARN of an [IAM role][iam_role] to assume.",
                              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
                              "type": "string"
                            },
                            "external_id": {
                              "title": "The optional unique external ID in conjunction with role to assume.",
                              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "imds": {
                              "description": "Configuration for authenticating with AWS through IMDS.",
                              "default": {
                                "max_attempts": 4,
                                "connect_timeout_seconds": 1,
                                "read_timeout_seconds": 1
                              },
                              "type": "object",
                              "properties": {
                                "connect_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Connect timeout for IMDS.",
                                  "default": 1
                                },
                                "max_attempts": {
                                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                                  "default": 4,
                                  "type": "integer",
                                  "maximum": 4294967295.0,
                                  "minimum": 0.0
                                },
                                "read_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Read timeout for IMDS.",
                                  "default": 1
                                }
                              }
                            },
                            "load_timeout_secs": {
                              "title": "Timeout for assuming the role, in seconds.",
                              "description": "Relevant when the default credentials chain or `assume_role` is used.",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        {
                          "description": "Default authentication strategy which tries a variety of substrategies in sequential order.",
                          "type": "object",
                          "properties": {
                            "imds": {
                              "description": "Configuration for authenticating with AWS through IMDS.",
                              "default": {
                                "max_attempts": 4,
                                "connect_timeout_seconds": 1,
                                "read_timeout_seconds": 1
                              },
                              "type": "object",
                              "properties": {
                                "connect_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Connect timeout for IMDS.",
                                  "default": 1
                                },
                                "max_attempts": {
                                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                                  "default": 4,
                                  "type": "integer",
                                  "maximum": 4294967295.0,
                                  "minimum": 0.0
                                },
                                "read_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Read timeout for IMDS.",
                                  "default": 1
                                }
                              }
                            },
                            "load_timeout_secs": {
                              "title": "Timeout for successfully loading any credentials, in seconds.",
                              "description": "Relevant when the default credentials chain or `assume_role` is used.",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "object",
                      "required": [
                        "strategy"
                      ],
                      "properties": {
                        "strategy": {
                          "description": "Amazon OpenSearch Service-specific authentication.",
                          "const": "aws"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        "aws": {
          "$ref": "#/$defs/core::option::Option%3Cvector::aws::region::RegionOrEndpoint%3E",
          "default": null
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "bulk": {
          "description": "Elasticsearch bulk mode configuration.",
          "default": {
            "action": "index",
            "index": "vector-%Y.%m.%d",
            "template_fallback_index": null,
            "version": null,
            "version_type": "internal"
          },
          "type": "object",
          "properties": {
            "action": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "Action to use when making requests to the [Elasticsearch Bulk API][es_bulk].",
              "description": "Only `index`, `create` and `update` actions are supported.\n\n[es_bulk]: <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html>",
              "default": "index"
            },
            "index": {
              "$ref": "#/$defs/vector::template::Template",
              "description": "The name of the index to write events to.",
              "default": "vector-%Y.%m.%d"
            },
            "template_fallback_index": {
              "description": "The default index to write events to if the template in `bulk.index` cannot be resolved",
              "type": [
                "string",
                "null"
              ]
            },
            "version": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "description": "Version field value."
            },
            "version_type": {
              "title": "Version type.",
              "description": "Possible values are `internal`, `external` or `external_gt` and `external_gte`.\n\n[es_index_versioning]: <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-versioning>",
              "default": "internal",
              "oneOf": [
                {
                  "description": "The `internal` type.",
                  "const": "internal"
                },
                {
                  "description": "The `external` or `external_gt` type.",
                  "const": "external"
                },
                {
                  "description": "The `external_gte` type.",
                  "const": "external_gte"
                }
              ]
            }
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "none"
        },
        "data_stream": {
          "description": "Elasticsearch data stream mode configuration.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Elasticsearch data stream mode configuration.",
              "type": "object",
              "properties": {
                "auto_routing": {
                  "title": "Automatically routes events by deriving the data stream name using specific event fields.",
                  "description": "The format of the data stream name is `<type>-<dataset>-<namespace>`, where each value comes\nfrom the `data_stream` configuration field of the same name.\n\nIf enabled, the value of the `data_stream.type`, `data_stream.dataset`, and\n`data_stream.namespace` event fields are used if they are present. Otherwise, the values\nset in this configuration are used.",
                  "default": true,
                  "type": "boolean"
                },
                "dataset": {
                  "$ref": "#/$defs/vector::template::Template",
                  "description": "The data stream dataset used to construct the data stream at index time.",
                  "default": "generic"
                },
                "namespace": {
                  "$ref": "#/$defs/vector::template::Template",
                  "description": "The data stream namespace used to construct the data stream at index time.",
                  "default": "default"
                },
                "sync_fields": {
                  "title": "Automatically adds and syncs the `data_stream.*` event fields if they are missing from the event.",
                  "description": "This ensures that fields match the name of the data stream that is receiving events.",
                  "default": true,
                  "type": "boolean"
                },
                "type": {
                  "$ref": "#/$defs/vector::template::Template",
                  "description": "The data stream type used to construct the data stream at index time.",
                  "default": "logs"
                }
              }
            }
          ]
        },
        "distribution": {
          "description": "Options for determining the health of an endpoint.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Options for determining the health of an endpoint.",
              "type": "object",
              "properties": {
                "retry_initial_backoff_secs": {
                  "description": "Initial delay between attempts to reactivate endpoints once they become unhealthy.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_max_duration_secs": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "Maximum delay between attempts to reactivate endpoints once they become unhealthy.",
                  "default": 3600
                }
              }
            }
          ]
        },
        "doc_type": {
          "title": "The [`doc_type`][doc_type] for your index data.",
          "description": "This is only relevant for Elasticsearch <= 6.X. If you are using >= 7.0 you do not need to\nset this option since Elasticsearch has removed it.\n\n[doc_type]: <https://www.elastic.co/guide/en/elasticsearch/reference/6.8/actions-index.html>",
          "default": "_doc",
          "type": "string"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "title": "The Elasticsearch endpoint to send logs to.",
          "description": "The endpoint must contain an HTTP scheme, and may specify a\nhostname or IP address and port.",
          "default": null,
          "deprecated": true,
          "type": [
            "string",
            "null"
          ]
        },
        "endpoints": {
          "title": "A list of Elasticsearch endpoints to send logs to.",
          "description": "The endpoint must contain an HTTP scheme, and may specify a\nhostname or IP address and port.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "id_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::ConfigValuePath%3E",
          "title": "The name of the event key that should map to Elasticsearch’s [`_id` field][es_id].",
          "description": "By default, the `_id` field is not set, which allows Elasticsearch to set this\nautomatically. Setting your own Elasticsearch IDs can [hinder performance][perf_doc].\n\n[es_id]: <https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html>\n[perf_doc]: <https://www.elastic.co/guide/en/elasticsearch/reference/master/tune-for-indexing-speed.html#_use_auto_generated_ids>",
          "default": null
        },
        "metrics": {
          "description": "Configuration for the `metric_to_log` transform.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/vector::transforms::metric_to_log::MetricToLogConfig"
            }
          ]
        },
        "mode": {
          "description": "Elasticsearch Indexing mode.",
          "default": "bulk",
          "oneOf": [
            {
              "description": "Ingests documents in bulk, using the bulk API `index` action.",
              "const": "bulk"
            },
            {
              "title": "Ingests documents in bulk, using the bulk API `create` action.",
              "description": "Elasticsearch Data Streams only support the `create` action.",
              "const": "data_stream"
            }
          ]
        },
        "opensearch_service_type": {
          "description": "Amazon OpenSearch service type",
          "default": "managed",
          "oneOf": [
            {
              "description": "Elasticsearch or OpenSearch Managed domain",
              "const": "managed"
            },
            {
              "description": "OpenSearch Serverless collection",
              "const": "serverless"
            }
          ]
        },
        "pipeline": {
          "description": "The name of the pipeline to apply.",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "query": {
          "description": "Custom parameters to add to the query string for each HTTP request sent to Elasticsearch.",
          "default": null,
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": {
            "type": "string"
          }
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::http::RequestConfig",
          "description": "Outbound HTTP request settings.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            },
            "headers": {}
          }
        },
        "request_retry_partial": {
          "title": "Whether or not to retry successful requests containing partial failures.",
          "description": "To avoid duplicates in Elasticsearch, please use option `id_key`.",
          "default": false,
          "type": "boolean"
        },
        "suppress_type_name": {
          "title": "Whether or not to send the `type` field to Elasticsearch.",
          "description": "The `type` field was deprecated in Elasticsearch 7.x and removed in Elasticsearch 8.x.\n\nIf enabled, the `doc_type` option is ignored.",
          "default": false,
          "deprecated": true,
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
          "default": null
        }
      }
    },
    "vector::sinks::file::FileSinkConfig": {
      "description": "Configuration for the `file` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "path"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "compression": {
              "description": "Compression configuration.",
              "default": "none",
              "oneOf": [
                {
                  "title": "[Gzip][gzip] compression.",
                  "description": "[gzip]: <https://www.gzip.org/>",
                  "const": "gzip"
                },
                {
                  "title": "[Zstandard][zstd] compression.",
                  "description": "[zstd]: <https://facebook.github.io/zstd/>",
                  "const": "zstd"
                },
                {
                  "description": "No compression.",
                  "const": "none"
                }
              ]
            },
            "idle_timeout_secs": {
              "$ref": "#/$defs/serde_with::DurationSeconds",
              "title": "The amount of time that a file can be idle and stay open.",
              "description": "After not receiving any events in this amount of time, the file is flushed and closed.",
              "default": 30
            },
            "internal_metrics": {
              "$ref": "#/$defs/vector::internal_events::file::FileInternalMetricsConfig",
              "description": "Configuration of internal metrics for file-based components.",
              "default": {
                "include_file_tag": false
              }
            },
            "path": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "File path to write events to.",
              "description": "Compression format extension must be explicit."
            },
            "timezone": {
              "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
              "default": null
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::gcp::cloud_storage::GcsSinkConfig": {
      "description": "Configuration for the `gcp_cloud_storage` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "bucket"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "acl": {
              "title": "The Predefined ACL to apply to created objects.",
              "description": "For more information, see [Predefined ACLs][predefined_acls].\n\n[predefined_acls]: <https://cloud.google.com/storage/docs/access-control/lists#predefined-acl>",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "title": "GCS Predefined ACLs.",
                  "description": "For more information, see [Predefined ACLs][predefined_acls].\n\n[predefined_acls]: <https://cloud.google.com/storage/docs/access-control/lists#predefined-acl>",
                  "oneOf": [
                    {
                      "title": "Bucket/object can be read by authenticated users.",
                      "description": "The bucket/object owner is granted the `OWNER` permission, and anyone authenticated Google\naccount holder is granted the `READER` permission.",
                      "const": "authenticated-read"
                    },
                    {
                      "title": "Object is semi-private.",
                      "description": "Both the object owner and bucket owner are granted the `OWNER` permission.\n\nOnly relevant when specified for an object: this predefined ACL is otherwise ignored when\nspecified for a bucket.",
                      "const": "bucket-owner-full-control"
                    },
                    {
                      "title": "Object is private, except to the bucket owner.",
                      "description": "The object owner is granted the `OWNER` permission, and the bucket owner is granted the\n`READER` permission.\n\nOnly relevant when specified for an object: this predefined ACL is otherwise ignored when\nspecified for a bucket.",
                      "const": "bucket-owner-read"
                    },
                    {
                      "title": "Bucket/object are private.",
                      "description": "The bucket/object owner is granted the `OWNER` permission, and no one else has\naccess.",
                      "const": "private"
                    },
                    {
                      "title": "Bucket/object are private within the project.",
                      "description": "Project owners and project editors are granted the `OWNER` permission, and anyone who is\npart of the project team is granted the `READER` permission.\n\nThis is the default.",
                      "const": "project-private"
                    },
                    {
                      "title": "Bucket/object can be read publicly.",
                      "description": "The bucket/object owner is granted the `OWNER` permission, and all other users, whether\nauthenticated or anonymous, are granted the `READER` permission.",
                      "const": "public-read"
                    }
                  ]
                }
              ]
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::BulkSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "bucket": {
              "description": "The GCS bucket name.",
              "type": "string"
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.\n\nSome cloud storage API clients and browsers handle decompression transparently, so\ndepending on how they are accessed, files may not always appear to be compressed.",
              "default": "none"
            },
            "endpoint": {
              "description": "API endpoint for Google Cloud Storage",
              "default": "https://storage.googleapis.com",
              "type": "string",
              "format": "uri"
            },
            "filename_append_uuid": {
              "title": "Whether or not to append a UUID v4 token to the end of the object key.",
              "description": "The UUID is appended to the timestamp portion of the object key, such that if the object key\ngenerated is `date=2022-07-18/1658176486`, setting this field to `true` results\nin an object key that looks like `date=2022-07-18/1658176486-30f6652c-71da-4f9f-800d-a1189c47c547`.\n\nThis ensures there are no name collisions, and can be useful in high-volume workloads where\nobject keys must be unique.",
              "default": true,
              "type": "boolean"
            },
            "filename_extension": {
              "title": "The filename extension to use in the object key.",
              "description": "If not specified, the extension is determined by the compression scheme used.",
              "type": [
                "string",
                "null"
              ]
            },
            "filename_time_format": {
              "title": "The timestamp format for the time component of the object key.",
              "description": "By default, object keys are appended with a timestamp that reflects when the objects are\nsent to S3, such that the resulting object key is functionally equivalent to joining the key\nprefix with the formatted timestamp, such as `date=2022-07-18/1658176486`.\n\nThis would represent a `key_prefix` set to `date=%F/` and the timestamp of Mon Jul 18 2022\n20:34:44 GMT+0000, with the `filename_time_format` being set to `%s`, which renders\ntimestamps in seconds since the Unix epoch.\n\nSupports the common [`strftime`][chrono_strftime_specifiers] specifiers found in most\nlanguages.\n\nWhen set to an empty string, no timestamp is appended to the key prefix.\n\n[chrono_strftime_specifiers]: <https://docs.rs/chrono/latest/chrono/format/strftime/index.html#specifiers>",
              "default": "%s",
              "type": "string"
            },
            "key_prefix": {
              "title": "A prefix to apply to all object keys.",
              "description": "Prefixes are useful for partitioning objects, such as by creating an object key that\nstores objects under a particular directory. If using a prefix for this purpose, it must end\nin `/` in order to act as a directory path. A trailing `/` is **not** automatically added.",
              "type": [
                "string",
                "null"
              ]
            },
            "metadata": {
              "title": "The set of metadata `key:value` pairs for the created objects.",
              "description": "For more information, see the [custom metadata][custom_metadata] documentation.\n\n[custom_metadata]: <https://cloud.google.com/storage/docs/metadata#custom-metadata>",
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 1000,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 1000,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "storage_class": {
              "title": "The storage class for created objects.",
              "description": "For more information, see the [storage classes][storage_classes] documentation.\n\n[storage_classes]: <https://cloud.google.com/storage/docs/storage-classes>",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "title": "GCS storage classes.",
                  "description": "For more information, see [Storage classes][storage_classes].\n\n[storage_classes]: <https://cloud.google.com/storage/docs/storage-classes>",
                  "oneOf": [
                    {
                      "title": "Standard storage.",
                      "description": "This is the default.",
                      "const": "STANDARD"
                    },
                    {
                      "description": "Nearline storage.",
                      "const": "NEARLINE"
                    },
                    {
                      "description": "Coldline storage.",
                      "const": "COLDLINE"
                    },
                    {
                      "description": "Archive storage.",
                      "const": "ARCHIVE"
                    }
                  ]
                }
              ]
            },
            "timezone": {
              "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
              "default": null
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services."
        }
      ]
    },
    "vector::sinks::gcp::pubsub::PubsubConfig": {
      "description": "Configuration for the `gcp_pubsub` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "encoding",
            "project",
            "topic"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 10000000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "endpoint": {
              "title": "The endpoint to which to publish events.",
              "description": "The scheme (`http` or `https`) must be specified. No path should be included since the paths defined\nby the [`GCP Pub/Sub`][pubsub_api] API are used.\n\nThe trailing slash `/` must not be included.\n\n[pubsub_api]: <https://cloud.google.com/pubsub/docs/reference/rest>",
              "default": "https://pubsub.googleapis.com",
              "type": "string"
            },
            "project": {
              "description": "The project name to which to publish events.",
              "type": "string"
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
              "default": null
            },
            "topic": {
              "description": "The topic within the project to which to publish events.",
              "type": "string"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services.",
          "default": {
            "api_key": null,
            "credentials_path": null
          }
        }
      ]
    },
    "vector::sinks::gcp::stackdriver::logs::config::StackdriverConfig": {
      "description": "Configuration for the `gcp_stackdriver_logs` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "log_id",
            "resource"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
              "description": "Transformations to prepare an event for serialization.",
              "default": {}
            },
            "log_id": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "The log ID to which to publish logs.",
              "description": "This is a name you create to identify this log stream."
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 1000,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 1000,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "resource": {
              "title": "A monitored resource.",
              "description": "The monitored resource to associate the logs with.",
              "allOf": [
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "title": "The monitored resource type.",
                      "description": "For example, the type of a Compute Engine VM instance is `gce_instance`.\nSee the [Google Cloud Platform monitored resource documentation][gcp_resources] for\nmore details.\n\n[gcp_resources]: <https://cloud.google.com/monitoring/api/resources>",
                      "type": "string"
                    }
                  }
                },
                {
                  "description": "Type-specific labels.",
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/$defs/vector::template::Template"
                  }
                }
              ]
            },
            "severity_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::ConfigValuePath%3E",
              "title": "The field of the log event from which to take the outgoing log’s `severity` field.",
              "description": "The named field is removed from the log event if present, and must be either an integer\nbetween 0 and 800 or a string containing one of the [severity level names][sev_names] (case\nis ignored) or a common prefix such as `err`.\n\nIf no severity key is specified, the severity of outgoing records is set to 0 (`DEFAULT`).\n\nSee the [GCP Stackdriver Logging LogSeverity description][logsev_docs] for more details on\nthe value of the `severity` field.\n\n[sev_names]: <https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#logseverity>\n[logsev_docs]: <https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#logseverity>"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "description": "Logging locations.",
          "oneOf": [
            {
              "title": "The billing account ID to which to publish logs.",
              "description": "Exactly one of `billing_account_id`, `folder_id`, `organization_id`, or `project_id` must be set.",
              "type": "object",
              "required": [
                "billing_account_id"
              ],
              "properties": {
                "billing_account_id": {
                  "type": "string"
                }
              }
            },
            {
              "title": "The folder ID to which to publish logs.",
              "description": "See the [Google Cloud Platform folder documentation][folder_docs] for more details.\n\nExactly one of `billing_account_id`, `folder_id`, `organization_id`, or `project_id` must be set.\n\n[folder_docs]: <https://cloud.google.com/resource-manager/docs/creating-managing-folders>",
              "type": "object",
              "required": [
                "folder_id"
              ],
              "properties": {
                "folder_id": {
                  "type": "string"
                }
              }
            },
            {
              "title": "The organization ID to which to publish logs.",
              "description": "This would be the identifier assigned to your organization on Google Cloud Platform.\n\nExactly one of `billing_account_id`, `folder_id`, `organization_id`, or `project_id` must be set.",
              "type": "object",
              "required": [
                "organization_id"
              ],
              "properties": {
                "organization_id": {
                  "type": "string"
                }
              }
            },
            {
              "title": "The project ID to which to publish logs.",
              "description": "See the [Google Cloud Platform project management documentation][project_docs] for more details.\n\nExactly one of `billing_account_id`, `folder_id`, `organization_id`, or `project_id` must be set.\n\n[project_docs]: <https://cloud.google.com/resource-manager/docs/creating-managing-projects>",
              "type": "object",
              "required": [
                "project_id"
              ],
              "properties": {
                "project_id": {
                  "type": "string"
                }
              }
            }
          ]
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services."
        }
      ]
    },
    "vector::sinks::gcp::stackdriver::metrics::config::StackdriverConfig": {
      "description": "Configuration for the `gcp_stackdriver_metrics` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "project_id",
            "resource"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "default_namespace": {
              "title": "The default namespace to use for metrics that do not have one.",
              "description": "Metrics with the same name can only be differentiated by their namespace, and not all\nmetrics have their own namespace.",
              "default": "namespace",
              "type": "string"
            },
            "project_id": {
              "title": "The project ID to which to publish metrics.",
              "description": "See the [Google Cloud Platform project management documentation][project_docs] for more details.\n\n[project_docs]: <https://cloud.google.com/resource-manager/docs/creating-managing-projects>",
              "type": "string"
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 1000,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 1000,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "resource": {
              "title": "A monitored resource.",
              "description": "The monitored resource to associate the metrics with.",
              "allOf": [
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "title": "The monitored resource type.",
                      "description": "For example, the type of a Compute Engine VM instance is `gce_instance`.",
                      "type": "string"
                    }
                  }
                },
                {
                  "description": "Type-specific labels.",
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              ]
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services."
        }
      ]
    },
    "vector::sinks::gcp_chronicle::chronicle_unstructured::ChronicleUnstructuredConfig": {
      "description": "Configuration for the `gcp_chronicle_unstructured` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "customer_id",
            "encoding",
            "log_type"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 1000000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 15.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "compression": {
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none",
              "oneOf": [
                {
                  "description": "Compression algorithm.",
                  "oneOf": [
                    {
                      "description": "No compression.",
                      "const": "none"
                    },
                    {
                      "title": "[Gzip][gzip] compression.",
                      "description": "[gzip]: <https://www.gzip.org/>",
                      "const": "gzip"
                    }
                  ]
                },
                {
                  "description": "Compression algorithm and compression level.",
                  "type": "object",
                  "required": [
                    "algorithm"
                  ],
                  "properties": {
                    "algorithm": {
                      "description": "Compression algorithm.",
                      "oneOf": [
                        {
                          "description": "No compression.",
                          "const": "none"
                        },
                        {
                          "title": "[Gzip][gzip] compression.",
                          "description": "[gzip]: <https://www.gzip.org/>",
                          "const": "gzip"
                        }
                      ]
                    },
                    "level": {
                      "$ref": "#/$defs/vector::sinks::util::buffer::compression::CompressionLevel"
                    }
                  }
                }
              ]
            },
            "customer_id": {
              "description": "The Unique identifier (UUID) corresponding to the Chronicle instance.",
              "type": "string",
              "format": "uuid"
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "endpoint": {
              "description": "The endpoint to send data to.",
              "type": [
                "string",
                "null"
              ]
            },
            "labels": {
              "description": "A set of labels that are attached to each batch of events.",
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            },
            "log_type": {
              "$ref": "#/$defs/vector::template::Template",
              "title": "The type of log entries in a request.",
              "description": "This must be one of the [supported log types][unstructured_log_types_doc], otherwise\nChronicle rejects the entry with an error.\n\n[unstructured_log_types_doc]: <https://cloud.google.com/chronicle/docs/ingestion/parser-list/supported-default-parsers>"
            },
            "namespace": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "description": "User-configured environment namespace to identify the data domain the logs originated from."
            },
            "region": {
              "description": "The GCP region to use.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "Google Chronicle regions.",
                  "oneOf": [
                    {
                      "description": "EU region.",
                      "const": "eu"
                    },
                    {
                      "description": "US region.",
                      "const": "us"
                    },
                    {
                      "description": "APAC region.",
                      "const": "asia"
                    }
                  ]
                }
              ]
            },
            "request": {
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 1000,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              },
              "type": "object",
              "properties": {
                "adaptive_concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
                  "title": "Configuration of adaptive concurrency parameters.",
                  "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
                  "default": {
                    "initial_concurrency": 1,
                    "decrease_ratio": 0.9,
                    "ewma_alpha": 0.4,
                    "rtt_deviation_scale": 2.5,
                    "max_concurrency_limit": 200
                  }
                },
                "concurrency": {
                  "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
                  "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
                  "default": "adaptive"
                },
                "rate_limit_duration_secs": {
                  "description": "The time window used for the `rate_limit_num` option.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "rate_limit_num": {
                  "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
                  "default": 1000,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_attempts": {
                  "description": "The maximum number of retries to make for failed requests.",
                  "default": 9223372036854775807,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "retry_initial_backoff_secs": {
                  "title": "The amount of time to wait before attempting the first retry for a failed request.",
                  "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "retry_jitter_mode": {
                  "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
                  "description": "The jitter mode to use for retry backoff behavior.",
                  "default": "Full"
                },
                "retry_max_duration_secs": {
                  "description": "The maximum amount of time to wait between retries.",
                  "default": 30,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 1.0
                },
                "timeout_secs": {
                  "title": "The time a request can take before being aborted.",
                  "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services."
        }
      ]
    },
    "vector::sinks::greptimedb::logs::config::GreptimeDBLogsConfig": {
      "description": "Configuration for the `greptimedb_logs` sink.",
      "type": "object",
      "required": [
        "endpoint",
        "table"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::greptimedb::GreptimeDBDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "description": "Set http compression encoding for the request\nDefault to none, `gzip` or `zstd` is supported.",
          "default": "gzip"
        },
        "dbname": {
          "$ref": "#/$defs/vector::template::Template",
          "title": "The [GreptimeDB database][database] name to connect.",
          "description": "Default to `public`, the default database of GreptimeDB.\n\nDatabase can be created via `create database` statement on\nGreptimeDB. If you are using GreptimeCloud, use `dbname` from the\nconnection information of your instance.\n\n[database]: <https://docs.greptime.com/user-guide/concepts/key-concepts#database>",
          "default": "public"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "description": "The endpoint of the GreptimeDB server.",
          "type": "string"
        },
        "extra_params": {
          "description": "Custom parameters to add to the query string for each HTTP request sent to GreptimeDB.",
          "default": null,
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": {
            "type": "string"
          }
        },
        "password": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "The password for your GreptimeDB instance.",
          "description": "This is required if your instance has authentication enabled.",
          "default": null
        },
        "pipeline_name": {
          "$ref": "#/$defs/vector::template::Template",
          "title": "Pipeline name to be used for the logs.",
          "description": "Default to `greptime_identity`, use the original log structure",
          "default": "greptime_identity"
        },
        "pipeline_version": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "description": "Pipeline version to be used for the logs."
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "table": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The table that data is inserted into."
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        },
        "username": {
          "title": "The username for your GreptimeDB instance.",
          "description": "This is required if your instance has authentication enabled.",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "vector::sinks::greptimedb::metrics::config::GreptimeDBConfig": {
      "$ref": "#/$defs/vector::sinks::greptimedb::metrics::config::GreptimeDBMetricsConfig",
      "description": "Configuration for the `greptimedb` sink."
    },
    "vector::sinks::greptimedb::metrics::config::GreptimeDBMetricsConfig": {
      "description": "Configuration items for GreptimeDB",
      "type": "object",
      "required": [
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::greptimedb::GreptimeDBDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "dbname": {
          "title": "The [GreptimeDB database][database] name to connect.",
          "description": "Default to `public`, the default database of GreptimeDB.\n\nDatabase can be created via `create database` statement on\nGreptimeDB. If you are using GreptimeCloud, use `dbname` from the\nconnection information of your instance.\n\n[database]: <https://docs.greptime.com/user-guide/concepts/key-concepts#database>",
          "default": "public",
          "type": "string"
        },
        "endpoint": {
          "title": "The host and port of GreptimeDB gRPC service.",
          "description": "This sink uses GreptimeDB's gRPC interface for data ingestion. By\ndefault, GreptimeDB listens to port 4001 for gRPC protocol.\n\nThe address _must_ include a port.",
          "type": "string"
        },
        "grpc_compression": {
          "description": "Set gRPC compression encoding for the request\nDefault to none, `gzip` or `zstd` is supported.",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "new_naming": {
          "title": "Use Greptime's prefixed naming for time index and value columns.",
          "description": "This is to keep consistency with GreptimeDB's naming pattern. By\ndefault, this sink will use `val` for value column name, and `ts` for\ntime index name. When turned on, `greptime_value` and\n`greptime_timestamp` will be used for these names.\n\nIf you are using this Vector sink together with other data ingestion\nsources of GreptimeDB, like Prometheus Remote Write and Influxdb Line\nProtocol, it is highly recommended to turn on this.\n\nAlso if there is a tag name conflict from your data source, for\nexample, you have a tag named as `val` or `ts`, you need to turn on\nthis option to avoid the conflict.\n\nDefault to `false` for compatibility.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "password": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "The password for your GreptimeDB instance.",
          "description": "This is required if your instance has authentication enabled.",
          "default": null
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        },
        "username": {
          "title": "The username for your GreptimeDB instance.",
          "description": "This is required if your instance has authentication enabled.",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "vector::sinks::honeycomb::config::HoneycombConfig": {
      "description": "Configuration for the `honeycomb` sink.",
      "type": "object",
      "required": [
        "api_key",
        "dataset"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "api_key": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The API key that is used to authenticate against Honeycomb."
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": 100000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": null,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "description": "The compression algorithm to use.",
          "default": "zstd"
        },
        "dataset": {
          "description": "The dataset to which logs are sent.",
          "type": "string"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "description": "Honeycomb's endpoint to send logs to",
          "default": "https://api.honeycomb.io",
          "type": "string",
          "format": "uri"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        }
      }
    },
    "vector::sinks::http::config::HttpSinkConfig": {
      "description": "Configuration for the `http` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "uri"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "auth": {
              "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none"
            },
            "headers": {
              "description": "A list of custom headers to add to each request.",
              "deprecated": true,
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            },
            "method": {
              "title": "HTTP method.",
              "description": "The HTTP method to use when making the request.",
              "default": "post",
              "oneOf": [
                {
                  "description": "GET.",
                  "const": "get"
                },
                {
                  "description": "HEAD.",
                  "const": "head"
                },
                {
                  "description": "POST.",
                  "const": "post"
                },
                {
                  "description": "PUT.",
                  "const": "put"
                },
                {
                  "description": "DELETE.",
                  "const": "delete"
                },
                {
                  "description": "OPTIONS.",
                  "const": "options"
                },
                {
                  "description": "TRACE.",
                  "const": "trace"
                },
                {
                  "description": "PATCH.",
                  "const": "patch"
                }
              ]
            },
            "payload_prefix": {
              "title": "A string to prefix the payload with.",
              "description": "This option is ignored if the encoding is not character delimited JSON.\n\nIf specified, the `payload_suffix` must also be specified and together they must produce a valid JSON object.",
              "default": "",
              "type": "string"
            },
            "payload_suffix": {
              "title": "A string to suffix the payload with.",
              "description": "This option is ignored if the encoding is not character delimited JSON.\n\nIf specified, the `payload_prefix` must also be specified and together they must produce a valid JSON object.",
              "default": "",
              "type": "string"
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::http::RequestConfig",
              "description": "Outbound HTTP request settings.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                },
                "headers": {}
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            },
            "uri": {
              "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
              "title": "The full URI to make HTTP requests to.",
              "description": "This should include the protocol and host, but can also include the port, path, and any other valid part of a URI."
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::humio::logs::HumioLogsConfig": {
      "description": "Configuration for the `humio_logs` sink.",
      "type": "object",
      "required": [
        "encoding",
        "token"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::splunk_hec::common::util::SplunkHecDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "none"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "title": "The base URL of the Humio instance.",
          "description": "The scheme (`http` or `https`) must be specified. No path should be included since the paths defined\nby the [`Splunk`][splunk] API are used.\n\n[splunk]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/Data/HECRESTendpoints>",
          "default": "https://cloud.humio.com",
          "type": "string"
        },
        "event_type": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The type of events sent to this sink. Humio uses this as the name of the parser to use to ingest the data.",
          "description": "If unset, Humio defaults it to none."
        },
        "host_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
          "title": "Overrides the name of the log field used to retrieve the hostname to send to Humio.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used if log\nevents are Legacy namespaced, or the semantic meaning of \"host\" is used, if defined.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>",
          "default": ".host"
        },
        "index": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "Optional name of the repository to ingest into.",
          "description": "In public-facing APIs, this must (if present) be equal to the repository used to create the ingest token used for authentication.\n\nIn private cluster setups, Humio can be configured to allow these to be different.\n\nFor more information, see [Humio’s Format of Data][humio_data_format].\n\n[humio_data_format]: <https://docs.humio.com/integrations/data-shippers/hec/#format-of-data>",
          "default": null
        },
        "indexed_fields": {
          "title": "Event fields to be added to Humio’s extra fields.",
          "description": "Can be used to tag events by specifying fields starting with `#`.\n\nFor more information, see [Humio’s Format of Data][humio_data_format].\n\n[humio_data_format]: <https://docs.humio.com/integrations/data-shippers/hec/#format-of-data>",
          "default": [],
          "type": "array",
          "items": {
            "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
          }
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "source": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The source of events sent to this sink.",
          "description": "Typically the filename the logs originated from. Maps to `@source` in Humio."
        },
        "timestamp_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
          "title": "Overrides the name of the log field used to retrieve the timestamp to send to Humio.\nWhen set to `“”`, a timestamp is not set in the events sent to Humio.",
          "description": "By default, either the [global `log_schema.timestamp_key` option][global_timestamp_key] is used\nif log events are Legacy namespaced, or the semantic meaning of \"timestamp\" is used, if defined.\n\n[global_timestamp_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.timestamp_key>",
          "default": ".timestamp"
        },
        "timestamp_nanos_key": {
          "description": "Overrides the name of the log field used to retrieve the nanosecond-enabled timestamp to send to Humio.",
          "default": "@timestamp.nanos",
          "type": [
            "string",
            "null"
          ]
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        },
        "token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The Humio ingestion token."
        }
      }
    },
    "vector::sinks::humio::metrics::HumioMetricsConfig": {
      "description": "Configuration for the `humio_metrics` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "token"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::splunk_hec::common::util::SplunkHecDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "none"
            },
            "endpoint": {
              "title": "The base URL of the Humio instance.",
              "description": "The scheme (`http` or `https`) must be specified. No path should be included since the paths defined\nby the [`Splunk`][splunk] API are used.\n\n[splunk]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/Data/HECRESTendpoints>",
              "default": "https://cloud.humio.com",
              "type": "string"
            },
            "event_type": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "title": "The type of events sent to this sink. Humio uses this as the name of the parser to use to ingest the data.",
              "description": "If unset, Humio defaults it to none."
            },
            "host_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to retrieve the hostname to send to Humio.",
              "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used if log\nevents are Legacy namespaced, or the semantic meaning of \"host\" is used, if defined.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>",
              "default": "host"
            },
            "index": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "title": "Optional name of the repository to ingest into.",
              "description": "In public-facing APIs, this must (if present) be equal to the repository used to create the ingest token used for authentication.\n\nIn private cluster setups, Humio can be configured to allow these to be different.\n\nFor more information, see [Humio’s Format of Data][humio_data_format].\n\n[humio_data_format]: <https://docs.humio.com/integrations/data-shippers/hec/#format-of-data>",
              "default": null
            },
            "indexed_fields": {
              "title": "Event fields to be added to Humio’s extra fields.",
              "description": "Can be used to tag events by specifying fields starting with `#`.\n\nFor more information, see [Humio’s Format of Data][humio_data_format].\n\n[humio_data_format]: <https://docs.humio.com/integrations/data-shippers/hec/#format-of-data>",
              "default": [],
              "type": "array",
              "items": {
                "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
              }
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "source": {
              "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
              "title": "The source of events sent to this sink.",
              "description": "Typically the filename the metrics originated from. Maps to `@source` in Humio."
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            },
            "token": {
              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
              "description": "The Humio ingestion token."
            }
          }
        },
        {
          "$ref": "#/$defs/vector::transforms::metric_to_log::MetricToLogConfig",
          "description": "Configuration for the `metric_to_log` transform."
        }
      ]
    },
    "vector::sinks::influxdb::logs::InfluxDbLogsConfig": {
      "description": "Configuration for the `influxdb_logs` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "endpoint"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 1000000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
              "description": "Transformations to prepare an event for serialization.",
              "default": {}
            },
            "endpoint": {
              "title": "The endpoint to send data to.",
              "description": "This should be a full HTTP URI, including the scheme, host, and port.",
              "type": "string"
            },
            "host_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Use this option to customize the key containing the hostname.",
              "description": "The setting of `log_schema.host_key`, usually `host`, is used here by default."
            },
            "measurement": {
              "description": "The name of the InfluxDB measurement that is written to.",
              "type": [
                "string",
                "null"
              ]
            },
            "message_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Use this option to customize the key containing the message.",
              "description": "The setting of `log_schema.message_key`, usually `message`, is used here by default."
            },
            "namespace": {
              "title": "The namespace of the measurement name to use.",
              "description": "When specified, the measurement name is `<namespace>.vector`.",
              "deprecated": true,
              "type": [
                "string",
                "null"
              ]
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "source_type_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Use this option to customize the key containing the source_type.",
              "description": "The setting of `log_schema.source_type_key`, usually `source_type`, is used here by default."
            },
            "tags": {
              "title": "The list of names of log fields that should be added as tags to each measurement.",
              "description": "By default Vector adds `metric_type` as well as the configured `log_schema.host_key` and\n`log_schema.source_type_key` options.",
              "default": [],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/core::option::Option%3Cvector::sinks::influxdb::InfluxDb1Settings%3E"
        },
        {
          "$ref": "#/$defs/core::option::Option%3Cvector::sinks::influxdb::InfluxDb2Settings%3E"
        }
      ]
    },
    "vector::sinks::influxdb::metrics::InfluxDbConfig": {
      "description": "Configuration for the `influxdb_metrics` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "endpoint"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 20,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "default_namespace": {
              "title": "Sets the default namespace for any metrics sent.",
              "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with a period (`.`).",
              "type": [
                "string",
                "null"
              ]
            },
            "endpoint": {
              "title": "The endpoint to send data to.",
              "description": "This should be a full HTTP URI, including the scheme, host, and port.",
              "type": "string"
            },
            "quantiles": {
              "description": "The list of quantiles to calculate when sending distribution metrics.",
              "default": [
                0.5,
                0.75,
                0.9,
                0.95,
                0.99
              ],
              "type": "array",
              "items": {
                "type": "number",
                "maximum": 9007199254740990.0,
                "minimum": -9007199254740990.0
              }
            },
            "request": {
              "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
              "title": "Middleware settings for outbound requests.",
              "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
              "default": {
                "timeout_secs": 60,
                "rate_limit_duration_secs": 1,
                "rate_limit_num": 9223372036854775807,
                "retry_attempts": 9223372036854775807,
                "retry_max_duration_secs": 30,
                "retry_initial_backoff_secs": 1,
                "retry_jitter_mode": "Full",
                "adaptive_concurrency": {
                  "initial_concurrency": 1,
                  "decrease_ratio": 0.9,
                  "ewma_alpha": 0.4,
                  "rtt_deviation_scale": 2.5,
                  "max_concurrency_limit": 200
                }
              }
            },
            "tags": {
              "description": "A map of additional tags, in the key/value pair format, to add to each measurement.",
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/core::option::Option%3Cvector::sinks::influxdb::InfluxDb1Settings%3E"
        },
        {
          "$ref": "#/$defs/core::option::Option%3Cvector::sinks::influxdb::InfluxDb2Settings%3E"
        }
      ]
    },
    "vector::sinks::kafka::config::KafkaSinkConfig": {
      "description": "Configuration for the `kafka` sink.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "bootstrap_servers",
            "encoding",
            "topic"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "bootstrap_servers": {
              "title": "A comma-separated list of Kafka bootstrap servers.",
              "description": "These are the servers in a Kafka cluster that a client should use to bootstrap its\nconnection to the cluster, allowing discovery of all the other hosts in the cluster.\n\nMust be in the form of `host:port`, and comma-separated.",
              "type": "string"
            },
            "compression": {
              "description": "Supported compression types for Kafka.",
              "default": "none",
              "oneOf": [
                {
                  "description": "No compression.",
                  "const": "none"
                },
                {
                  "description": "Gzip.",
                  "const": "gzip"
                },
                {
                  "description": "Snappy.",
                  "const": "snappy"
                },
                {
                  "description": "LZ4.",
                  "const": "lz4"
                },
                {
                  "description": "Zstandard.",
                  "const": "zstd"
                }
              ]
            },
            "encoding": {
              "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
              "description": "Configures how events are encoded into raw bytes."
            },
            "headers_key": {
              "title": "The log field name to use for the Kafka headers.",
              "description": "If omitted, no headers are written.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "A wrapper around `OwnedTargetPath` that allows it to be used in Vector config\nwith prefix default to `PathPrefix::Event`",
                  "type": "string"
                }
              ]
            },
            "healthcheck_topic": {
              "title": "The topic name to use for healthcheck. If omitted, `topic` is used.\nThis option helps prevent healthcheck warnings when `topic` is templated.",
              "description": "It is ignored when healthcheck is disabled.",
              "type": [
                "string",
                "null"
              ]
            },
            "key_field": {
              "title": "The log field name or tag key to use for the topic key.",
              "description": "If the field does not exist in the log or in the tags, a blank value is used. If\nunspecified, the key is not sent.\n\nKafka uses a hash of the key to choose the partition or uses round-robin if the record has\nno key.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "A wrapper around `OwnedTargetPath` that allows it to be used in Vector config\nwith prefix default to `PathPrefix::Event`",
                  "type": "string"
                }
              ]
            },
            "librdkafka_options": {
              "title": "A map of advanced options to pass directly to the underlying `librdkafka` client.",
              "description": "For more information on configuration options, see [Configuration properties][config_props_docs].\n\n[config_props_docs]: <https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md>",
              "default": {},
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "message_timeout_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "Local message timeout, in milliseconds.",
              "default": 300000
            },
            "socket_timeout_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "Default timeout, in milliseconds, for network requests.",
              "default": 60000
            },
            "topic": {
              "$ref": "#/$defs/vector::template::Template",
              "description": "The Kafka topic name to write events to."
            }
          }
        },
        {
          "$ref": "#/$defs/vector::kafka::KafkaAuthConfig",
          "description": "Kafka authentication configuration."
        }
      ]
    },
    "vector::sinks::loki::config::LokiConfig": {
      "description": "Configuration for the `loki` sink.",
      "type": "object",
      "required": [
        "encoding",
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": 1000000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 100000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "description": "Compression configuration.\nSnappy compression implies sending push requests as Protocol Buffers.",
          "default": "snappy"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
          "title": "The base URL of the Loki instance.",
          "description": "The `path` value is appended to this."
        },
        "labels": {
          "title": "A set of labels that are attached to each batch of events.",
          "description": "Both keys and values are templateable, which enables you to attach dynamic labels to events.\n\nValid label keys include `*`, and prefixes ending with `*`, to allow for the expansion of\nobjects into multiple labels. See [Label expansion][label_expansion] for more information.\n\nNote: If the set of labels has high cardinality, this can cause drastic performance issues\nwith Loki. To prevent this from happening, reduce the number of unique label keys and\nvalues.\n\n[label_expansion]: <https://vector.dev/docs/reference/configuration/sinks/loki/#label-expansion>",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::template::Template"
          }
        },
        "out_of_order_action": {
          "title": "Out-of-order event behavior.",
          "description": "Some sources may generate events with timestamps that aren't in chronological order. Even though the\nsink sorts the events before sending them to Loki, there is a chance that another event could come in\nthat is out of order with the latest events sent to Loki. Prior to Loki 2.4.0, this\nwas not supported and would result in an error during the push request.\n\nIf you're using Loki 2.4.0 or newer, `Accept` is the preferred action, which lets Loki handle\nany necessary sorting/reordering. If you're using an earlier version, then you must use `Drop`\nor `RewriteTimestamp` depending on which option makes the most sense for your use case.",
          "default": "accept",
          "oneOf": [
            {
              "title": "Accept the event.",
              "description": "The event is not dropped and is sent without modification.\n\nRequires Loki 2.4.0 or newer.",
              "const": "accept"
            },
            {
              "description": "Rewrite the timestamp of the event to the timestamp of the latest event seen by the sink.",
              "const": "rewrite_timestamp"
            },
            {
              "description": "Drop the event.",
              "const": "drop"
            }
          ]
        },
        "path": {
          "description": "The path to use in the URL of the Loki instance.",
          "default": "/loki/api/v1/push",
          "type": "string"
        },
        "remove_label_fields": {
          "description": "Whether or not to delete fields from the event when they are used as labels.",
          "default": false,
          "type": "boolean"
        },
        "remove_structured_metadata_fields": {
          "description": "Whether or not to delete fields from the event when they are used in structured metadata.",
          "default": false,
          "type": "boolean"
        },
        "remove_timestamp": {
          "title": "Whether or not to remove the timestamp from the event payload.",
          "description": "The timestamp is still sent as event metadata for Loki to use for indexing.",
          "default": true,
          "type": "boolean"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "structured_metadata": {
          "title": "Structured metadata that is attached to each batch of events.",
          "description": "Both keys and values are templateable, which enables you to attach dynamic structured metadata to events.\n\nValid metadata keys include `*`, and prefixes ending with `*`, to allow for the expansion of\nobjects into multiple metadata entries. This follows the same logic as [Label expansion][label_expansion].\n\n[label_expansion]: <https://vector.dev/docs/reference/configuration/sinks/loki/#label-expansion>",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::template::Template"
          }
        },
        "tenant_id": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The [tenant ID][tenant_id] to specify in requests to Loki.",
          "description": "When running Loki locally, a tenant ID is not required.\n\n[tenant_id]: <https://grafana.com/docs/loki/latest/operations/multi-tenancy/>"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::mezmo::LogdnaConfig": {
      "$ref": "#/$defs/vector::sinks::mezmo::MezmoConfig",
      "description": "Configuration for the `logdna` sink."
    },
    "vector::sinks::mezmo::MezmoConfig": {
      "description": "Configuration for the `mezmo` (formerly `logdna`) sink.",
      "type": "object",
      "required": [
        "api_key",
        "hostname"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "api_key": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The Ingestion API key."
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "default_app": {
          "description": "The default app that is set for events that do not contain a `file` or `app` field.",
          "default": "vector",
          "type": "string"
        },
        "default_env": {
          "description": "The default environment that is set for events that do not contain an `env` field.",
          "default": "production",
          "type": "string"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
          "title": "The HTTP endpoint to send logs to.",
          "description": "Both IP address and hostname are accepted formats.",
          "default": "https://logs.mezmo.com/"
        },
        "hostname": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The hostname that is attached to each batch of events."
        },
        "ip": {
          "description": "The IP address that is attached to each batch of events.",
          "type": [
            "string",
            "null"
          ]
        },
        "mac": {
          "description": "The MAC address that is attached to each batch of events.",
          "type": [
            "string",
            "null"
          ]
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tags": {
          "description": "The tags that are attached to each batch of events.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/vector::template::Template"
          }
        }
      }
    },
    "vector::sinks::mqtt::config::MqttSinkConfig": {
      "description": "Configuration for the `mqtt` sink",
      "type": "object",
      "required": [
        "encoding",
        "host",
        "topic"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "clean_session": {
          "description": "If set to true, the MQTT session is cleaned on login.",
          "default": false,
          "type": "boolean"
        },
        "client_id": {
          "description": "MQTT client ID.",
          "type": [
            "string",
            "null"
          ]
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "host": {
          "description": "MQTT server address (The broker’s domain name or IP address).",
          "type": "string"
        },
        "keep_alive": {
          "description": "Connection keep-alive interval.",
          "default": 60,
          "type": "integer",
          "maximum": 65535.0,
          "minimum": 0.0
        },
        "password": {
          "description": "MQTT password.",
          "type": [
            "string",
            "null"
          ]
        },
        "port": {
          "description": "TCP port of the MQTT server to connect to.",
          "default": 1883,
          "type": "integer",
          "maximum": 65535.0,
          "minimum": 0.0
        },
        "quality_of_service": {
          "description": "Supported Quality of Service types for MQTT.",
          "default": "atleastonce",
          "oneOf": [
            {
              "description": "AtLeastOnce.",
              "const": "atleastonce"
            },
            {
              "description": "AtMostOnce.",
              "const": "atmostonce"
            },
            {
              "description": "ExactlyOnce.",
              "const": "exactlyonce"
            }
          ]
        },
        "retain": {
          "description": "Whether the messages should be retained by the server",
          "default": false,
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        },
        "topic": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "MQTT publish topic (templates allowed)"
        },
        "user": {
          "description": "MQTT username.",
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "vector::sinks::nats::config::NatsSinkConfig": {
      "description": "Configuration for the `nats` sink.",
      "type": "object",
      "required": [
        "encoding",
        "subject",
        "url"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::nats::NatsAuthConfig%3E"
        },
        "connection_name": {
          "title": "A NATS [name][nats_connection_name] assigned to the NATS connection.",
          "description": "[nats_connection_name]: <https://docs.nats.io/using-nats/developer/connecting/name>",
          "default": "vector",
          "type": "string"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "jetstream": {
          "title": "Send messages using [Jetstream][jetstream].",
          "description": "If set, the `subject` must belong to an existing JetStream stream.\n\n[jetstream]: <https://docs.nats.io/nats-concepts/jetstream>",
          "default": false,
          "type": "boolean"
        },
        "request": {
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          },
          "type": "object",
          "properties": {
            "adaptive_concurrency": {
              "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
              "title": "Configuration of adaptive concurrency parameters.",
              "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
              "default": {
                "initial_concurrency": 1,
                "decrease_ratio": 0.9,
                "ewma_alpha": 0.4,
                "rtt_deviation_scale": 2.5,
                "max_concurrency_limit": 200
              }
            },
            "concurrency": {
              "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
              "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
              "default": "none"
            },
            "rate_limit_duration_secs": {
              "description": "The time window used for the `rate_limit_num` option.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "rate_limit_num": {
              "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_attempts": {
              "description": "The maximum number of retries to make for failed requests.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_initial_backoff_secs": {
              "title": "The amount of time to wait before attempting the first retry for a failed request.",
              "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "retry_jitter_mode": {
              "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
              "description": "The jitter mode to use for retry backoff behavior.",
              "default": "Full"
            },
            "retry_max_duration_secs": {
              "description": "The maximum amount of time to wait between retries.",
              "default": 30,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "timeout_secs": {
              "title": "The time a request can take before being aborted.",
              "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
              "default": 60,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        },
        "subject": {
          "$ref": "#/$defs/vector::template::Template",
          "title": "The NATS [subject][nats_subject] to publish messages to.",
          "description": "[nats_subject]: <https://docs.nats.io/nats-concepts/subjects>"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        },
        "url": {
          "title": "The NATS [URL][nats_url] to connect to.",
          "description": "The URL must take the form of `nats://server:port`.\nIf the port is not specified it defaults to 4222.\n\n[nats_url]: <https://docs.nats.io/using-nats/developer/connecting#nats-url>",
          "type": "string"
        }
      }
    },
    "vector::sinks::new_relic::config::NewRelicConfig": {
      "description": "Configuration for the `new_relic` sink.",
      "type": "object",
      "required": [
        "account_id",
        "api",
        "license_key"
      ],
      "properties": {
        "account_id": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The New Relic account ID."
        },
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "api": {
          "description": "New Relic API endpoint.",
          "oneOf": [
            {
              "description": "Events API.",
              "const": "events"
            },
            {
              "description": "Metrics API.",
              "const": "metrics"
            },
            {
              "description": "Logs API.",
              "const": "logs"
            }
          ]
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": 1000000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 100,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "gzip"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "license_key": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "A valid New Relic license key."
        },
        "region": {
          "description": "New Relic region.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "New Relic region.",
              "oneOf": [
                {
                  "description": "US region.",
                  "const": "us"
                },
                {
                  "description": "EU region.",
                  "const": "eu"
                }
              ]
            }
          ]
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        }
      }
    },
    "vector::sinks::opentelemetry::OpenTelemetryConfig": {
      "description": "Configuration for the `OpenTelemetry` sink.",
      "type": "object",
      "required": [
        "protocol"
      ],
      "properties": {
        "protocol": {
          "description": "Protocol configuration",
          "oneOf": [
            {
              "description": "Send data over HTTP.",
              "allOf": [
                {
                  "$ref": "#/$defs/vector::sinks::http::config::HttpSinkConfig",
                  "description": "Configuration for the `http` sink."
                },
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "description": "Send data over HTTP.",
                      "const": "http"
                    }
                  }
                }
              ]
            }
          ]
        }
      }
    },
    "vector::sinks::papertrail::PapertrailConfig": {
      "description": "Configuration for the `papertrail` sink.",
      "type": "object",
      "required": [
        "encoding",
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "$ref": "#/$defs/vector::sinks::util::uri::UriSerde",
          "description": "The TCP endpoint to send logs to."
        },
        "keepalive": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
        },
        "process": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The value to use as the `process` in Papertrail.",
          "default": "vector"
        },
        "send_buffer_bytes": {
          "description": "Configures the send buffer size using the `SO_SNDBUF` option on the socket.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sinks::prometheus::exporter::PrometheusExporterConfig": {
      "description": "Configuration for the `prometheus_exporter` sink.",
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The address to expose for scraping.",
          "description": "The metrics are exposed at the typical Prometheus exporter path, `/metrics`.",
          "default": "0.0.0.0:9598"
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "buckets": {
          "title": "Default buckets to use for aggregating [distribution][dist_metric_docs] metrics into histograms.",
          "description": "[dist_metric_docs]: <https://vector.dev/docs/about/under-the-hood/architecture/data-model/metric/#distribution>",
          "default": [
            0.005,
            0.01,
            0.025,
            0.05,
            0.1,
            0.25,
            0.5,
            1.0,
            2.5,
            5.0,
            10.0
          ],
          "type": "array",
          "items": {
            "type": "number",
            "maximum": 9007199254740990.0,
            "minimum": -9007199254740990.0
          }
        },
        "default_namespace": {
          "title": "The default namespace for any metrics sent.",
          "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with an underscore (`_`).\n\nIt should follow the Prometheus [naming conventions][prom_naming_docs].\n\n[prom_naming_docs]: <https://prometheus.io/docs/practices/naming/#metric-names>",
          "type": [
            "string",
            "null"
          ]
        },
        "distributions_as_summaries": {
          "title": "Whether or not to render [distributions][dist_metric_docs] as an [aggregated histogram][prom_agg_hist_docs] or  [aggregated summary][prom_agg_summ_docs].",
          "description": "While distributions as a lossless way to represent a set of samples for a\nmetric is supported, Prometheus clients (the application being scraped, which is this sink) must\naggregate locally into either an aggregated histogram or aggregated summary.\n\n[dist_metric_docs]: <https://vector.dev/docs/about/under-the-hood/architecture/data-model/metric/#distribution>\n[prom_agg_hist_docs]: <https://prometheus.io/docs/concepts/metric_types/#histogram>\n[prom_agg_summ_docs]: <https://prometheus.io/docs/concepts/metric_types/#summary>",
          "default": false,
          "type": "boolean"
        },
        "flush_period_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "title": "The interval, in seconds, on which metrics are flushed.",
          "description": "On the flush interval, if a metric has not been seen since the last flush interval, it is\nconsidered expired and is removed.\n\nBe sure to configure this value higher than your client’s scrape interval.",
          "default": 60
        },
        "quantiles": {
          "title": "Quantiles to use for aggregating [distribution][dist_metric_docs] metrics into a summary.",
          "description": "[dist_metric_docs]: <https://vector.dev/docs/about/under-the-hood/architecture/data-model/metric/#distribution>",
          "default": [
            0.5,
            0.75,
            0.9,
            0.95,
            0.99
          ],
          "type": "array",
          "items": {
            "type": "number",
            "maximum": 9007199254740990.0,
            "minimum": -9007199254740990.0
          }
        },
        "suppress_timestamp": {
          "title": "Suppresses timestamps on the Prometheus output.",
          "description": "This can sometimes be useful when the source of metrics leads to their timestamps being too\nfar in the past for Prometheus to allow them, such as when aggregating metrics over long\ntime periods, or when replaying old metrics from a disk buffer.",
          "default": false,
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sinks::prometheus::remote_write::config::RemoteWriteConfig": {
      "description": "Configuration for the `prometheus_remote_write` sink.",
      "type": "object",
      "required": [
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "description": "Authentication strategies.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Authentication strategies.",
              "oneOf": [
                {
                  "description": "HTTP Basic Authentication.",
                  "type": "object",
                  "required": [
                    "password",
                    "strategy",
                    "user"
                  ],
                  "properties": {
                    "password": {
                      "description": "Basic authentication password.",
                      "type": "string"
                    },
                    "strategy": {
                      "description": "HTTP Basic Authentication.",
                      "const": "basic"
                    },
                    "user": {
                      "description": "Basic authentication username.",
                      "type": "string"
                    }
                  }
                },
                {
                  "title": "Bearer authentication.",
                  "description": "A bearer token (OAuth2, JWT, etc) is passed as-is.",
                  "type": "object",
                  "required": [
                    "strategy",
                    "token"
                  ],
                  "properties": {
                    "strategy": {
                      "title": "Bearer authentication.",
                      "description": "A bearer token (OAuth2, JWT, etc) is passed as-is.",
                      "const": "bearer"
                    },
                    "token": {
                      "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                      "description": "The bearer token to send."
                    }
                  }
                },
                {
                  "description": "Amazon Prometheus Service-specific authentication.",
                  "allOf": [
                    {
                      "description": "Configuration of the authentication strategy for interacting with AWS services.",
                      "anyOf": [
                        {
                          "description": "Authenticate using a fixed access key and secret pair.",
                          "type": "object",
                          "required": [
                            "access_key_id",
                            "secret_access_key"
                          ],
                          "properties": {
                            "access_key_id": {
                              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                              "description": "The AWS access key ID."
                            },
                            "assume_role": {
                              "title": "The ARN of an [IAM role][iam_role] to assume.",
                              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "external_id": {
                              "title": "The optional unique external ID in conjunction with role to assume.",
                              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this will default to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "secret_access_key": {
                              "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                              "description": "The AWS secret access key."
                            }
                          }
                        },
                        {
                          "title": "Authenticate using credentials stored in a file.",
                          "description": "Additionally, the specific credential profile to use can be set.\nThe file format must match the credentials file format outlined in\n<https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html>.",
                          "type": "object",
                          "required": [
                            "credentials_file"
                          ],
                          "properties": {
                            "credentials_file": {
                              "description": "Path to the credentials file.",
                              "type": "string"
                            },
                            "profile": {
                              "title": "The credentials profile to use.",
                              "description": "Used to select AWS credentials from a provided credentials file.",
                              "default": "default",
                              "type": "string"
                            }
                          }
                        },
                        {
                          "description": "Assume the given role ARN.",
                          "type": "object",
                          "required": [
                            "assume_role"
                          ],
                          "properties": {
                            "assume_role": {
                              "title": "The ARN of an [IAM role][iam_role] to assume.",
                              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
                              "type": "string"
                            },
                            "external_id": {
                              "title": "The optional unique external ID in conjunction with role to assume.",
                              "description": "[external_id]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html>",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "imds": {
                              "description": "Configuration for authenticating with AWS through IMDS.",
                              "default": {
                                "max_attempts": 4,
                                "connect_timeout_seconds": 1,
                                "read_timeout_seconds": 1
                              },
                              "type": "object",
                              "properties": {
                                "connect_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Connect timeout for IMDS.",
                                  "default": 1
                                },
                                "max_attempts": {
                                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                                  "default": 4,
                                  "type": "integer",
                                  "maximum": 4294967295.0,
                                  "minimum": 0.0
                                },
                                "read_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Read timeout for IMDS.",
                                  "default": 1
                                }
                              }
                            },
                            "load_timeout_secs": {
                              "title": "Timeout for assuming the role, in seconds.",
                              "description": "Relevant when the default credentials chain or `assume_role` is used.",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        {
                          "description": "Default authentication strategy which tries a variety of substrategies in sequential order.",
                          "type": "object",
                          "properties": {
                            "imds": {
                              "description": "Configuration for authenticating with AWS through IMDS.",
                              "default": {
                                "max_attempts": 4,
                                "connect_timeout_seconds": 1,
                                "read_timeout_seconds": 1
                              },
                              "type": "object",
                              "properties": {
                                "connect_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Connect timeout for IMDS.",
                                  "default": 1
                                },
                                "max_attempts": {
                                  "description": "Number of IMDS retries for fetching tokens and metadata.",
                                  "default": 4,
                                  "type": "integer",
                                  "maximum": 4294967295.0,
                                  "minimum": 0.0
                                },
                                "read_timeout_seconds": {
                                  "$ref": "#/$defs/serde_with::DurationSeconds",
                                  "description": "Read timeout for IMDS.",
                                  "default": 1
                                }
                              }
                            },
                            "load_timeout_secs": {
                              "title": "Timeout for successfully loading any credentials, in seconds.",
                              "description": "Relevant when the default credentials chain or `assume_role` is used.",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "region": {
                              "title": "The [AWS region][aws_region] to send STS requests to.",
                              "description": "If not set, this defaults to the configured region\nfor the service itself.\n\n[aws_region]: <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "object",
                      "required": [
                        "strategy"
                      ],
                      "properties": {
                        "strategy": {
                          "description": "Amazon Prometheus Service-specific authentication.",
                          "const": "aws"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        "aws": {
          "$ref": "#/$defs/core::option::Option%3Cvector::aws::region::RegionOrEndpoint%3E"
        },
        "batch": {
          "description": "The batch config for remote write.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null,
            "aggregate": true
          },
          "allOf": [
            {
              "type": "object",
              "properties": {
                "aggregate": {
                  "description": "Whether or not to aggregate metrics within a batch.",
                  "default": true,
                  "type": "boolean"
                }
              }
            },
            {
              "description": "Event batching behavior.",
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": null,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          ]
        },
        "buckets": {
          "title": "Default buckets to use for aggregating [distribution][dist_metric_docs] metrics into histograms.",
          "description": "[dist_metric_docs]: <https://vector.dev/docs/about/under-the-hood/architecture/data-model/metric/#distribution>",
          "default": [
            0.005,
            0.01,
            0.025,
            0.05,
            0.1,
            0.25,
            0.5,
            1.0,
            2.5,
            5.0,
            10.0
          ],
          "type": "array",
          "items": {
            "type": "number",
            "maximum": 9007199254740990.0,
            "minimum": -9007199254740990.0
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "snappy"
        },
        "default_namespace": {
          "title": "The default namespace for any metrics sent.",
          "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with an underscore (`_`).\n\nIt should follow the Prometheus [naming conventions][prom_naming_docs].\n\n[prom_naming_docs]: <https://prometheus.io/docs/practices/naming/#metric-names>",
          "type": [
            "string",
            "null"
          ]
        },
        "endpoint": {
          "title": "The endpoint to send data to.",
          "description": "The endpoint should include the scheme and the path to write to.",
          "type": "string"
        },
        "quantiles": {
          "title": "Quantiles to use for aggregating [distribution][dist_metric_docs] metrics into a summary.",
          "description": "[dist_metric_docs]: <https://vector.dev/docs/about/under-the-hood/architecture/data-model/metric/#distribution>",
          "default": [
            0.5,
            0.75,
            0.9,
            0.95,
            0.99
          ],
          "type": "array",
          "items": {
            "type": "number",
            "maximum": 9007199254740990.0,
            "minimum": -9007199254740990.0
          }
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tenant_id": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The tenant ID to send.",
          "description": "If set, a header named `X-Scope-OrgID` is added to outgoing requests with the value of this setting.\n\nThis may be used by Cortex or other remote services to identify the tenant making the request.",
          "default": null
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::pulsar::config::PulsarSinkConfig": {
      "description": "Configuration for the `pulsar` sink.",
      "type": "object",
      "required": [
        "encoding",
        "endpoint",
        "topic"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "description": "Authentication configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Authentication configuration.",
              "type": "object",
              "properties": {
                "name": {
                  "title": "Basic authentication name/username.",
                  "description": "This can be used either for basic authentication (username/password) or JWT authentication.\nWhen used for JWT, the value should be `token`.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "oauth2": {
                  "description": "OAuth2-specific authentication configuration.",
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "description": "OAuth2-specific authentication configuration.",
                      "type": "object",
                      "required": [
                        "credentials_url",
                        "issuer_url"
                      ],
                      "properties": {
                        "audience": {
                          "description": "The OAuth2 audience.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "credentials_url": {
                          "title": "The credentials URL.",
                          "description": "A data URL is also supported.",
                          "type": "string"
                        },
                        "issuer_url": {
                          "description": "The issuer URL.",
                          "type": "string"
                        },
                        "scope": {
                          "description": "The OAuth2 scope.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  ]
                },
                "token": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
                  "title": "Basic authentication password/token.",
                  "description": "This can be used either for basic authentication (username/password) or JWT authentication.\nWhen used for JWT, the value should be the signed JWT, in the compact representation."
                }
              }
            }
          ]
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_events": null,
            "max_bytes": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "description": "The maximum size of a batch before it is flushed.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "title": "The maximum amount of events in a batch before it is flushed.",
              "description": "Note this is an unsigned 32 bit integer which is a smaller capacity than\nmany of the other sink batch settings.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 4294967295.0,
              "minimum": 0.0
            }
          }
        },
        "compression": {
          "description": "Supported compression types for Pulsar.",
          "default": "none",
          "oneOf": [
            {
              "description": "No compression.",
              "const": "none"
            },
            {
              "description": "LZ4.",
              "const": "lz4"
            },
            {
              "description": "Zlib.",
              "const": "zlib"
            },
            {
              "description": "Zstandard.",
              "const": "zstd"
            },
            {
              "description": "Snappy.",
              "const": "snappy"
            }
          ]
        },
        "connection_retry_options": {
          "description": "Custom connection retry options configuration for the Pulsar client.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Custom connection retry options configuration for the Pulsar client.",
              "type": "object",
              "properties": {
                "connection_timeout_secs": {
                  "description": "Time limit to establish a connection.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "keep_alive_secs": {
                  "description": "Keep-alive interval for each broker connection.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_backoff_secs": {
                  "description": "Maximum delay between reconnection retries.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_retries": {
                  "description": "Maximum number of connection retries.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "min_backoff_ms": {
                  "description": "Minimum delay between connection retries.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "title": "The endpoint to which the Pulsar client should connect to.",
          "description": "The endpoint should specify the pulsar protocol and port.",
          "type": "string"
        },
        "partition_key_field": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "title": "The log field name or tags key to use for the partition key.",
          "description": "If the field does not exist in the log event or metric tags, a blank value will be used.\n\nIf omitted, the key is not sent.\n\nPulsar uses a hash of the key to choose the topic-partition or uses round-robin if the record has no key."
        },
        "producer_name": {
          "description": "The name of the producer. If not specified, the default name assigned by Pulsar is used.",
          "type": [
            "string",
            "null"
          ]
        },
        "properties_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "title": "The log field name to use for the Pulsar properties key.",
          "description": "If omitted, no properties will be written."
        },
        "topic": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The Pulsar topic name to write events to."
        }
      }
    },
    "vector::sinks::redis::config::RedisSinkConfig": {
      "description": "Configuration for the `redis` sink.",
      "type": "object",
      "required": [
        "encoding",
        "endpoint",
        "key"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": null,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 1,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "data_type": {
          "description": "Redis data type to store messages in.",
          "default": "list",
          "oneOf": [
            {
              "title": "The Redis `list` type.",
              "description": "This resembles a deque, where messages can be popped and pushed from either end.\n\nThis is the default.",
              "const": "list"
            },
            {
              "title": "The Redis `channel` type.",
              "description": "Redis channels function in a pub/sub fashion, allowing many-to-many broadcasting and receiving.",
              "const": "channel"
            }
          ]
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "title": "The URL of the Redis endpoint to connect to.",
          "description": "The URL _must_ take the form of `protocol://server:port/db` where the protocol can either be\n`redis` or `rediss` for connections secured via TLS.",
          "type": "string"
        },
        "key": {
          "$ref": "#/$defs/vector::template::Template",
          "description": "The Redis key to publish messages to."
        },
        "list_option": {
          "description": "List-specific options.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "List-specific options.",
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "The method to use for pushing messages into a `list`.",
                  "oneOf": [
                    {
                      "title": "Use the `rpush` method.",
                      "description": "This pushes messages onto the tail of the list.\n\nThis is the default.",
                      "const": "rpush"
                    },
                    {
                      "title": "Use the `lpush` method.",
                      "description": "This pushes messages onto the head of the list.",
                      "const": "lpush"
                    }
                  ]
                }
              }
            }
          ]
        },
        "request": {
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          },
          "type": "object",
          "properties": {
            "adaptive_concurrency": {
              "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
              "title": "Configuration of adaptive concurrency parameters.",
              "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
              "default": {
                "initial_concurrency": 1,
                "decrease_ratio": 0.9,
                "ewma_alpha": 0.4,
                "rtt_deviation_scale": 2.5,
                "max_concurrency_limit": 200
              }
            },
            "concurrency": {
              "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
              "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
              "default": "none"
            },
            "rate_limit_duration_secs": {
              "description": "The time window used for the `rate_limit_num` option.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "rate_limit_num": {
              "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_attempts": {
              "description": "The maximum number of retries to make for failed requests.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_initial_backoff_secs": {
              "title": "The amount of time to wait before attempting the first retry for a failed request.",
              "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "retry_jitter_mode": {
              "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
              "description": "The jitter mode to use for retry backoff behavior.",
              "default": "Full"
            },
            "retry_max_duration_secs": {
              "description": "The maximum amount of time to wait between retries.",
              "default": 30,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "timeout_secs": {
              "title": "The time a request can take before being aborted.",
              "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
              "default": 60,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        }
      }
    },
    "vector::sinks::sematext::Region": {
      "description": "The Sematext region to send data to.",
      "oneOf": [
        {
          "description": "United States",
          "const": "us"
        },
        {
          "description": "Europe",
          "const": "eu"
        }
      ]
    },
    "vector::sinks::sematext::logs::SematextLogsConfig": {
      "description": "Configuration for the `sematext_logs` sink.",
      "type": "object",
      "required": [
        "token"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::transformer::Transformer",
          "description": "Transformations to prepare an event for serialization.",
          "default": {}
        },
        "endpoint": {
          "title": "The endpoint to send data to.",
          "description": "Setting this option overrides the `region` option.",
          "type": [
            "string",
            "null"
          ]
        },
        "region": {
          "$ref": "#/$defs/vector::sinks::sematext::Region",
          "description": "The Sematext region to send data to.",
          "default": "us"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The token that is used to write to Sematext."
        }
      }
    },
    "vector::sinks::sematext::metrics::SematextMetricsConfig": {
      "description": "Configuration for the `sematext_metrics` sink.",
      "type": "object",
      "required": [
        "default_namespace",
        "token"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": null,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 20,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "default_namespace": {
          "title": "Sets the default namespace for any metrics sent.",
          "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with a period (`.`).",
          "type": "string"
        },
        "endpoint": {
          "title": "The endpoint to send data to.",
          "description": "Setting this option overrides the `region` option.",
          "type": [
            "string",
            "null"
          ]
        },
        "region": {
          "$ref": "#/$defs/vector::sinks::sematext::Region",
          "description": "The Sematext region to send data to.",
          "default": "us"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "description": "The token that is used to write to Sematext."
        }
      }
    },
    "vector::sinks::socket::SocketSinkConfig": {
      "description": "Configuration for the `socket` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            }
          }
        },
        {
          "description": "Socket mode.",
          "oneOf": [
            {
              "description": "Send over TCP.",
              "allOf": [
                {
                  "description": "TCP configuration.",
                  "allOf": [
                    {
                      "description": "A TCP sink.",
                      "type": "object",
                      "required": [
                        "address"
                      ],
                      "properties": {
                        "address": {
                          "title": "The address to connect to.",
                          "description": "Both IP address and hostname are accepted formats.\n\nThe address _must_ include a port.",
                          "type": "string"
                        },
                        "keepalive": {
                          "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                        },
                        "send_buffer_bytes": {
                          "title": "The size of the socket's send buffer.",
                          "description": "If set, the value of the setting is passed via the `SO_SNDBUF` option.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        },
                        "tls": {
                          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
                        }
                      }
                    },
                    {
                      "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
                      "description": "Encoding configuration."
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over TCP.",
                      "const": "tcp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Send over UDP.",
              "allOf": [
                {
                  "description": "UDP configuration.",
                  "allOf": [
                    {
                      "type": "object",
                      "required": [
                        "encoding"
                      ],
                      "properties": {
                        "encoding": {
                          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
                          "description": "Configures how events are encoded into raw bytes."
                        }
                      }
                    },
                    {
                      "description": "A UDP sink.",
                      "type": "object",
                      "required": [
                        "address"
                      ],
                      "properties": {
                        "address": {
                          "title": "The address to connect to.",
                          "description": "Both IP address and hostname are accepted formats.\n\nThe address _must_ include a port.",
                          "type": "string"
                        },
                        "send_buffer_bytes": {
                          "title": "The size of the socket's send buffer.",
                          "description": "If set, the value of the setting is passed via the `SO_SNDBUF` option.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 0.0
                        }
                      }
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over UDP.",
                      "const": "udp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Send over a Unix domain socket (UDS), in stream mode.",
              "allOf": [
                {
                  "description": "Unix Domain Socket configuration.",
                  "allOf": [
                    {
                      "description": "A Unix Domain Socket sink.",
                      "type": "object",
                      "required": [
                        "path"
                      ],
                      "properties": {
                        "path": {
                          "$ref": "#/$defs/stdlib::PathBuf",
                          "title": "The Unix socket path.",
                          "description": "This should be an absolute path."
                        }
                      }
                    },
                    {
                      "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
                      "description": "Encoding configuration."
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over a Unix domain socket (UDS), in stream mode.",
                      "const": "unix_stream"
                    }
                  }
                }
              ]
            },
            {
              "description": "Send over a Unix domain socket (UDS), in datagram mode.\nUnavailable on macOS, due to send(2)'s apparent non-blocking behavior,\nresulting in ENOBUFS errors which we currently don't handle.",
              "allOf": [
                {
                  "description": "Unix Domain Socket configuration.",
                  "allOf": [
                    {
                      "description": "A Unix Domain Socket sink.",
                      "type": "object",
                      "required": [
                        "path"
                      ],
                      "properties": {
                        "path": {
                          "$ref": "#/$defs/stdlib::PathBuf",
                          "title": "The Unix socket path.",
                          "description": "This should be an absolute path."
                        }
                      }
                    },
                    {
                      "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
                      "description": "Encoding configuration."
                    }
                  ]
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over a Unix domain socket (UDS), in datagram mode.\nUnavailable on macOS, due to send(2)'s apparent non-blocking behavior,\nresulting in ENOBUFS errors which we currently don't handle.",
                      "const": "unix_datagram"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::sinks::splunk_hec::common::acknowledgements::HecClientAcknowledgementsConfig": {
      "description": "Splunk HEC acknowledgement configuration.",
      "default": {
        "indexer_acknowledgements_enabled": true,
        "query_interval": 10,
        "retry_limit": 30,
        "max_pending_acks": 1000000
      },
      "allOf": [
        {
          "type": "object",
          "properties": {
            "indexer_acknowledgements_enabled": {
              "title": "Controls if the sink integrates with [Splunk HEC indexer acknowledgements][splunk_indexer_ack_docs] for end-to-end acknowledgements.",
              "description": "[splunk_indexer_ack_docs]: <https://docs.splunk.com/Documentation/Splunk/8.2.3/Data/AboutHECIDXAck>",
              "type": "boolean"
            },
            "max_pending_acks": {
              "title": "The maximum number of pending acknowledgements from events sent to the Splunk HEC collector.",
              "description": "Once reached, the sink begins applying backpressure.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "query_interval": {
              "description": "The amount of time to wait between queries to the Splunk HEC indexer acknowledgement endpoint.",
              "type": "integer",
              "maximum": 255.0,
              "minimum": 1.0
            },
            "retry_limit": {
              "description": "The maximum number of times an acknowledgement ID is queried for its status.",
              "type": "integer",
              "maximum": 255.0,
              "minimum": 1.0
            }
          }
        },
        {
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          },
          "type": "object",
          "properties": {
            "enabled": {
              "title": "Whether or not end-to-end acknowledgements are enabled.",
              "description": "When enabled for a sink, any source connected to that sink, where the source supports\nend-to-end acknowledgements as well, waits for events to be acknowledged by **all\nconnected** sinks before acknowledging them at the source.\n\nEnabling or disabling acknowledgements at the sink level takes precedence over any global\n[`acknowledgements`][global_acks] configuration.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>",
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        }
      ]
    },
    "vector::sinks::splunk_hec::logs::config::HecLogsSinkConfig": {
      "description": "Configuration for the `splunk_hec_logs` sink.",
      "type": "object",
      "required": [
        "default_token",
        "encoding",
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector::sinks::splunk_hec::common::acknowledgements::HecClientAcknowledgementsConfig",
          "description": "Splunk HEC acknowledgement configuration.",
          "default": {
            "indexer_acknowledgements_enabled": true,
            "query_interval": 10,
            "retry_limit": 30,
            "max_pending_acks": 1000000
          }
        },
        "auto_extract_timestamp": {
          "title": "Passes the `auto_extract_timestamp` option to Splunk.",
          "description": "This option is only relevant to Splunk v8.x and above, and is only applied when\n`endpoint_target` is set to `event`.\n\nSetting this to `true` causes Splunk to extract the timestamp from the message text\nrather than use the timestamp embedded in the event. The timestamp must be in the format\n`yyyy-mm-dd hh:mm:ss`.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::splunk_hec::common::util::SplunkHecDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "none"
        },
        "default_token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "title": "Default Splunk HEC token.",
          "description": "If an event has a token set in its secrets (`splunk_hec_token`), it prevails over the one set here."
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "endpoint": {
          "title": "The base URL of the Splunk instance.",
          "description": "The scheme (`http` or `https`) must be specified. No path should be included since the paths defined\nby the [`Splunk`][splunk] API are used.\n\n[splunk]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/Data/HECRESTendpoints>",
          "type": "string",
          "format": "uri"
        },
        "endpoint_target": {
          "description": "Splunk HEC endpoint configuration.",
          "default": "event",
          "oneOf": [
            {
              "title": "Events are sent to the [raw endpoint][raw_endpoint_docs].",
              "description": "When the raw endpoint is used, configured [event metadata][event_metadata_docs] is sent as\nquery parameters on the request, except for the `timestamp` field.\n\n[raw_endpoint_docs]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/RESTREF/RESTinput#services.2Fcollector.2Fraw>\n[event_metadata_docs]: <https://docs.splunk.com/Documentation/Splunk/latest/Data/FormateventsforHTTPEventCollector#Event_metadata>",
              "const": "raw"
            },
            {
              "title": "Events are sent to the [event endpoint][event_endpoint_docs].",
              "description": "When the event endpoint is used, configured [event metadata][event_metadata_docs] is sent\ndirectly with each event.\n\n[event_endpoint_docs]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/RESTREF/RESTinput#services.2Fcollector.2Fevent>\n[event_metadata_docs]: <https://docs.splunk.com/Documentation/Splunk/latest/Data/FormateventsforHTTPEventCollector#Event_metadata>",
              "const": "event"
            }
          ]
        },
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "title": "Overrides the name of the log field used to retrieve the hostname to send to Splunk HEC.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used if log\nevents are Legacy namespaced, or the semantic meaning of \"host\" is used, if defined.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
        },
        "index": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The name of the index to send events to.",
          "description": "If not specified, the default index defined within Splunk is used."
        },
        "indexed_fields": {
          "title": "Fields to be [added to Splunk index][splunk_field_index_docs].",
          "description": "[splunk_field_index_docs]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/Data/IFXandHEC>",
          "default": [],
          "type": "array",
          "items": {
            "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigValuePath"
          }
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "source": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The source of events sent to this sink.",
          "description": "This is typically the filename the logs originated from.\n\nIf unset, the Splunk collector sets it."
        },
        "sourcetype": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The sourcetype of events sent to this sink.",
          "description": "If unset, Splunk defaults to `httpevent`."
        },
        "timestamp_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "title": "Overrides the name of the log field used to retrieve the timestamp to send to Splunk HEC.\nWhen set to `“”`, a timestamp is not set in the events sent to Splunk HEC.",
          "description": "By default, either the [global `log_schema.timestamp_key` option][global_timestamp_key] is used\nif log events are Legacy namespaced, or the semantic meaning of \"timestamp\" is used, if defined.\n\n[global_timestamp_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.timestamp_key>"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::splunk_hec::metrics::config::HecMetricsSinkConfig": {
      "description": "Configuration of the `splunk_hec_metrics` sink.",
      "type": "object",
      "required": [
        "default_token",
        "endpoint"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector::sinks::splunk_hec::common::acknowledgements::HecClientAcknowledgementsConfig",
          "description": "Splunk HEC acknowledgement configuration.",
          "default": {
            "indexer_acknowledgements_enabled": true,
            "query_interval": 10,
            "retry_limit": 30,
            "max_pending_acks": 1000000
          }
        },
        "batch": {
          "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::splunk_hec::common::util::SplunkHecDefaultBatchSettings%3E",
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          }
        },
        "compression": {
          "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
          "title": "Compression configuration.",
          "description": "All compression algorithms use the default compression level unless otherwise specified.",
          "default": "none"
        },
        "default_namespace": {
          "title": "Sets the default namespace for any metrics sent.",
          "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with a period (`.`).",
          "type": [
            "string",
            "null"
          ]
        },
        "default_token": {
          "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
          "title": "Default Splunk HEC token.",
          "description": "If an event has a token set in its metadata, it prevails over the one set here."
        },
        "endpoint": {
          "title": "The base URL of the Splunk instance.",
          "description": "The scheme (`http` or `https`) must be specified. No path should be included since the paths defined\nby the [`Splunk`][splunk] API are used.\n\n[splunk]: <https://docs.splunk.com/Documentation/Splunk/8.0.0/Data/HECRESTendpoints>",
          "type": "string",
          "format": "uri"
        },
        "host_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "title": "Overrides the name of the log field used to retrieve the hostname to send to Splunk HEC.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>",
          "default": "host"
        },
        "index": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The name of the index where to send the events to.",
          "description": "If not specified, the default index defined within Splunk is used."
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "source": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The source of events sent to this sink.",
          "description": "This is typically the filename the logs originated from.\n\nIf unset, the Splunk collector sets it."
        },
        "sourcetype": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The sourcetype of events sent to this sink.",
          "description": "If unset, Splunk defaults to `httpevent`."
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sinks::statsd::config::StatsdSinkConfig": {
      "description": "Configuration for the `statsd` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              },
              "type": "object",
              "properties": {
                "max_bytes": {
                  "title": "The maximum size of a batch that is processed by a sink.",
                  "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
                  "default": 1300,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "max_events": {
                  "description": "The maximum size of a batch before it is flushed.",
                  "default": 1000,
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "timeout_secs": {
                  "description": "The maximum age of a batch before it is flushed.",
                  "default": 1.0,
                  "type": [
                    "number",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            },
            "default_namespace": {
              "title": "Sets the default namespace for any metrics sent.",
              "description": "This namespace is only used if a metric has no existing namespace. When a namespace is\npresent, it is used as a prefix to the metric name, and separated with a period (`.`).",
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        {
          "description": "Socket mode.",
          "oneOf": [
            {
              "description": "Send over TCP.",
              "allOf": [
                {
                  "description": "TCP configuration.",
                  "type": "object",
                  "required": [
                    "address"
                  ],
                  "properties": {
                    "address": {
                      "$ref": "#/$defs/vector::sinks::util::service::net::HostAndPort",
                      "title": "The address to connect to.",
                      "description": "Both IP addresses and hostnames/fully qualified domain names (FQDNs) are accepted formats.\n\nThe address _must_ include a port."
                    },
                    "keepalive": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                    },
                    "send_buffer_size": {
                      "title": "The size of the socket's send buffer.",
                      "description": "If set, the value of the setting is passed via the `SO_SNDBUF` option.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "tls": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over TCP.",
                      "const": "tcp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Send over UDP.",
              "allOf": [
                {
                  "description": "UDP configuration.",
                  "type": "object",
                  "required": [
                    "address"
                  ],
                  "properties": {
                    "address": {
                      "$ref": "#/$defs/vector::sinks::util::service::net::HostAndPort",
                      "title": "The address to connect to.",
                      "description": "Both IP addresses and hostnames/fully qualified domain names (FQDNs) are accepted formats.\n\nThe address _must_ include a port."
                    },
                    "send_buffer_size": {
                      "title": "The size of the socket's send buffer.",
                      "description": "If set, the value of the setting is passed via the `SO_SNDBUF` option.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over UDP.",
                      "const": "udp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Send over a Unix domain socket (UDS).",
              "allOf": [
                {
                  "description": "Unix Domain Socket configuration.",
                  "type": "object",
                  "required": [
                    "path"
                  ],
                  "properties": {
                    "path": {
                      "$ref": "#/$defs/stdlib::PathBuf",
                      "title": "The Unix socket path.",
                      "description": "This should be an absolute path."
                    },
                    "send_buffer_size": {
                      "title": "The size of the socket's send buffer.",
                      "description": "If set, the value of the setting is passed via the `SO_SNDBUF` option.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "unix_mode": {
                      "description": "The Unix socket mode to use.",
                      "default": "Stream",
                      "oneOf": [
                        {
                          "description": "Datagram-oriented (`SOCK_DGRAM`).",
                          "const": "Datagram"
                        },
                        {
                          "description": "Stream-oriented (`SOCK_STREAM`).",
                          "const": "Stream"
                        }
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Send over a Unix domain socket (UDS).",
                      "const": "unix"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings": {
      "title": "Configuration of adaptive concurrency parameters.",
      "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
      "type": "object",
      "properties": {
        "decrease_ratio": {
          "title": "The fraction of the current value to set the new concurrency limit when decreasing the limit.",
          "description": "Valid values are greater than `0` and less than `1`. Smaller values cause the algorithm to scale back rapidly\nwhen latency increases.\n\nNote that the new limit is rounded down after applying this ratio.",
          "default": 0.9,
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0
        },
        "ewma_alpha": {
          "title": "The weighting of new measurements compared to older measurements.",
          "description": "Valid values are greater than `0` and less than `1`.\n\nARC uses an exponentially weighted moving average (EWMA) of past RTT measurements as a reference to compare with\nthe current RTT. Smaller values cause this reference to adjust more slowly, which may be useful if a service has\nunusually high response variability.",
          "default": 0.4,
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0
        },
        "initial_concurrency": {
          "title": "The initial concurrency limit to use. If not specified, the initial limit will be 1 (no concurrency).",
          "description": "It is recommended to set this value to your service's average limit if you're seeing that it takes a\nlong time to ramp up adaptive concurrency after a restart. You can find this value by looking at the\n`adaptive_concurrency_limit` metric.",
          "default": 1,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "max_concurrency_limit": {
          "title": "The maximum concurrency limit.",
          "description": "The adaptive request concurrency limit will not go above this bound. This is put in place as a safeguard.",
          "default": 200,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "rtt_deviation_scale": {
          "title": "Scale of RTT deviations which are not considered anomalous.",
          "description": "Valid values are greater than or equal to `0`, and we expect reasonable values to range from `1.0` to `3.0`.\n\nWhen calculating the past RTT average, we also compute a secondary “deviation” value that indicates how variable\nthose values are. We use that deviation when comparing the past RTT average to the current measurements, so we\ncan ignore increases in RTT that are within an expected range. This factor is used to scale up the deviation to\nan appropriate range.  Larger values cause the algorithm to ignore larger increases in the RTT.",
          "default": 2.5,
          "type": "number",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::sinks::util::batch::BatchConfig<vector::sinks::greptimedb::GreptimeDBDefaultBatchSettings>": {
      "description": "Event batching behavior.",
      "type": "object",
      "properties": {
        "max_bytes": {
          "title": "The maximum size of a batch that is processed by a sink.",
          "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_events": {
          "description": "The maximum size of a batch before it is flushed.",
          "default": 20,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "timeout_secs": {
          "description": "The maximum age of a batch before it is flushed.",
          "default": 1.0,
          "type": [
            "number",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": -9007199254740990.0
        }
      }
    },
    "vector::sinks::util::batch::BatchConfig<vector::sinks::splunk_hec::common::util::SplunkHecDefaultBatchSettings>": {
      "description": "Event batching behavior.",
      "type": "object",
      "properties": {
        "max_bytes": {
          "title": "The maximum size of a batch that is processed by a sink.",
          "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
          "default": 1000000,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_events": {
          "description": "The maximum size of a batch before it is flushed.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "timeout_secs": {
          "description": "The maximum age of a batch before it is flushed.",
          "default": 1.0,
          "type": [
            "number",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": -9007199254740990.0
        }
      }
    },
    "vector::sinks::util::batch::BatchConfig<vector::sinks::util::batch::BulkSizeBasedDefaultBatchSettings>": {
      "description": "Event batching behavior.",
      "type": "object",
      "properties": {
        "max_bytes": {
          "title": "The maximum size of a batch that is processed by a sink.",
          "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
          "default": 10000000,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_events": {
          "description": "The maximum size of a batch before it is flushed.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "timeout_secs": {
          "description": "The maximum age of a batch before it is flushed.",
          "default": 300.0,
          "type": [
            "number",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": -9007199254740990.0
        }
      }
    },
    "vector::sinks::util::batch::BatchConfig<vector::sinks::util::batch::RealtimeSizeBasedDefaultBatchSettings>": {
      "description": "Event batching behavior.",
      "type": "object",
      "properties": {
        "max_bytes": {
          "title": "The maximum size of a batch that is processed by a sink.",
          "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
          "default": 10000000,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_events": {
          "description": "The maximum size of a batch before it is flushed.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "timeout_secs": {
          "description": "The maximum age of a batch before it is flushed.",
          "default": 1.0,
          "type": [
            "number",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": -9007199254740990.0
        }
      }
    },
    "vector::sinks::util::buffer::compression::Compression": {
      "title": "Compression configuration.",
      "description": "All compression algorithms use the default compression level unless otherwise specified.",
      "oneOf": [
        {
          "description": "Compression algorithm.",
          "oneOf": [
            {
              "description": "No compression.",
              "const": "none"
            },
            {
              "title": "[Gzip][gzip] compression.",
              "description": "[gzip]: <https://www.gzip.org/>",
              "const": "gzip"
            },
            {
              "title": "[Zlib][zlib] compression.",
              "description": "[zlib]: <https://zlib.net/>",
              "const": "zlib"
            },
            {
              "title": "[Zstandard][zstd] compression.",
              "description": "[zstd]: <https://facebook.github.io/zstd/>",
              "const": "zstd"
            },
            {
              "title": "[Snappy][snappy] compression.",
              "description": "[snappy]: <https://github.com/google/snappy/blob/main/docs/README.md>",
              "const": "snappy"
            }
          ]
        },
        {
          "description": "Compression algorithm and compression level.",
          "type": "object",
          "required": [
            "algorithm"
          ],
          "properties": {
            "algorithm": {
              "description": "Compression algorithm.",
              "oneOf": [
                {
                  "description": "No compression.",
                  "const": "none"
                },
                {
                  "title": "[Gzip][gzip] compression.",
                  "description": "[gzip]: <https://www.gzip.org/>",
                  "const": "gzip"
                },
                {
                  "title": "[Zlib][zlib] compression.",
                  "description": "[zlib]: <https://zlib.net/>",
                  "const": "zlib"
                },
                {
                  "title": "[Zstandard][zstd] compression.",
                  "description": "[zstd]: <https://facebook.github.io/zstd/>",
                  "const": "zstd"
                },
                {
                  "title": "[Snappy][snappy] compression.",
                  "description": "[snappy]: <https://github.com/google/snappy/blob/main/docs/README.md>",
                  "const": "snappy"
                }
              ]
            },
            "level": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::CompressionLevel"
            }
          }
        }
      ]
    },
    "vector::sinks::util::buffer::compression::CompressionLevel": {
      "description": "Compression level.",
      "enum": [
        "none",
        "fast",
        "best",
        "default",
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21
      ]
    },
    "vector::sinks::util::http::RequestConfig": {
      "description": "Outbound HTTP request settings.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "headers": {
              "description": "Additional HTTP headers to add to every HTTP request.",
              "default": {},
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        },
        {
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "type": "object",
          "properties": {
            "adaptive_concurrency": {
              "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
              "title": "Configuration of adaptive concurrency parameters.",
              "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
              "default": {
                "initial_concurrency": 1,
                "decrease_ratio": 0.9,
                "ewma_alpha": 0.4,
                "rtt_deviation_scale": 2.5,
                "max_concurrency_limit": 200
              }
            },
            "concurrency": {
              "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
              "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
              "default": "adaptive"
            },
            "rate_limit_duration_secs": {
              "description": "The time window used for the `rate_limit_num` option.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "rate_limit_num": {
              "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_attempts": {
              "description": "The maximum number of retries to make for failed requests.",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "retry_initial_backoff_secs": {
              "title": "The amount of time to wait before attempting the first retry for a failed request.",
              "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
              "default": 1,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "retry_jitter_mode": {
              "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
              "description": "The jitter mode to use for retry backoff behavior.",
              "default": "Full"
            },
            "retry_max_duration_secs": {
              "description": "The maximum amount of time to wait between retries.",
              "default": 30,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "timeout_secs": {
              "title": "The time a request can take before being aborted.",
              "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
              "default": 60,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        }
      ]
    },
    "vector::sinks::util::retries::JitterMode": {
      "description": "The jitter mode to use for retry backoff behavior.",
      "oneOf": [
        {
          "description": "No jitter.",
          "const": "None"
        },
        {
          "title": "Full jitter.",
          "description": "The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff\nstrategy.\n\nIncorporating full jitter into your backoff strategy can greatly reduce the likelihood\nof creating accidental denial of service (DoS) conditions against your own systems when\nmany clients are recovering from a failure state.",
          "const": "Full"
        }
      ]
    },
    "vector::sinks::util::service::TowerRequestConfig": {
      "title": "Middleware settings for outbound requests.",
      "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
      "type": "object",
      "properties": {
        "adaptive_concurrency": {
          "$ref": "#/$defs/vector::sinks::util::adaptive_concurrency::AdaptiveConcurrencySettings",
          "title": "Configuration of adaptive concurrency parameters.",
          "description": "These parameters typically do not require changes from the default, and incorrect values can lead to meta-stable or\nunstable performance and sink behavior. Proceed with caution.",
          "default": {
            "initial_concurrency": 1,
            "decrease_ratio": 0.9,
            "ewma_alpha": 0.4,
            "rtt_deviation_scale": 2.5,
            "max_concurrency_limit": 200
          }
        },
        "concurrency": {
          "$ref": "#/$defs/vector::sinks::util::service::concurrency::Concurrency",
          "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
          "default": "adaptive"
        },
        "rate_limit_duration_secs": {
          "description": "The time window used for the `rate_limit_num` option.",
          "default": 1,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "rate_limit_num": {
          "description": "The maximum number of requests allowed within the `rate_limit_duration_secs` time window.",
          "default": 9223372036854775807,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "retry_attempts": {
          "description": "The maximum number of retries to make for failed requests.",
          "default": 9223372036854775807,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "retry_initial_backoff_secs": {
          "title": "The amount of time to wait before attempting the first retry for a failed request.",
          "description": "After the first retry has failed, the fibonacci sequence is used to select future backoffs.",
          "default": 1,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "retry_jitter_mode": {
          "$ref": "#/$defs/vector::sinks::util::retries::JitterMode",
          "description": "The jitter mode to use for retry backoff behavior.",
          "default": "Full"
        },
        "retry_max_duration_secs": {
          "description": "The maximum amount of time to wait between retries.",
          "default": 30,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "timeout_secs": {
          "title": "The time a request can take before being aborted.",
          "description": "Datadog highly recommends that you do not lower this value below the service's internal timeout, as this could\ncreate orphaned requests, pile on retries, and result in duplicate data downstream.",
          "default": 60,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::sinks::util::service::concurrency::Concurrency": {
      "description": "Configuration for outbound request concurrency.\n\nThis can be set either to one of the below enum values or to a positive integer, which denotes\na fixed concurrency limit.",
      "oneOf": [
        {
          "title": "A fixed concurrency of 1.",
          "description": "Only one request can be outstanding at any given time.",
          "const": "none"
        },
        {
          "title": "Concurrency will be managed by Vector's [Adaptive Request Concurrency][arc] feature.",
          "description": "[arc]: <https://vector.dev/docs/about/under-the-hood/networking/arc/>",
          "const": "adaptive"
        },
        {
          "description": "A fixed amount of concurrency will be allowed.",
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      ]
    },
    "vector::sinks::util::service::net::HostAndPort": {
      "title": "The address to connect to.",
      "description": "Both IP addresses and hostnames/fully qualified domain names (FQDNs) are accepted formats.\n\nThe address _must_ include a port.",
      "type": "string"
    },
    "vector::sinks::util::uri::UriSerde": {
      "title": "The URI component of a request.",
      "description": "",
      "type": "string"
    },
    "vector::sinks::vector::config::VectorConfig": {
      "description": "Configuration for the `vector` sink.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "title": "The downstream Vector address to which to connect.",
          "description": "Both IP address and hostname are accepted formats.\n\nThe address _must_ include a port.",
          "type": "string",
          "format": "uri"
        },
        "batch": {
          "description": "Event batching behavior.",
          "default": {
            "max_bytes": null,
            "max_events": null,
            "timeout_secs": null
          },
          "type": "object",
          "properties": {
            "max_bytes": {
              "title": "The maximum size of a batch that is processed by a sink.",
              "description": "This is based on the uncompressed size of the batched events, before they are\nserialized/compressed.",
              "default": null,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "max_events": {
              "description": "The maximum size of a batch before it is flushed.",
              "default": 1000,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "timeout_secs": {
              "description": "The maximum age of a batch before it is flushed.",
              "default": 1.0,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            }
          }
        },
        "compression": {
          "title": "Whether or not to compress requests.",
          "description": "If set to `true`, requests are compressed with [`gzip`][gzip_docs].\n\n[gzip_docs]: <https://www.gzip.org/>",
          "default": false,
          "type": "boolean"
        },
        "request": {
          "$ref": "#/$defs/vector::sinks::util::service::TowerRequestConfig",
          "title": "Middleware settings for outbound requests.",
          "description": "Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc.\n\nNote that the retry backoff policy follows the Fibonacci sequence.",
          "default": {
            "timeout_secs": 60,
            "rate_limit_duration_secs": 1,
            "rate_limit_num": 9223372036854775807,
            "retry_attempts": 9223372036854775807,
            "retry_max_duration_secs": 30,
            "retry_initial_backoff_secs": 1,
            "retry_jitter_mode": "Full",
            "adaptive_concurrency": {
              "initial_concurrency": 1,
              "decrease_ratio": 0.9,
              "ewma_alpha": 0.4,
              "rtt_deviation_scale": 2.5,
              "max_concurrency_limit": 200
            }
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E",
          "default": null
        },
        "version": {
          "description": "Version of the configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Marker type for the version two of the configuration for the `vector` sink.",
              "oneOf": [
                {
                  "description": "Marker value for version two.",
                  "const": "2"
                }
              ]
            }
          ]
        }
      }
    },
    "vector::sinks::webhdfs::config::WebHdfsConfig": {
      "description": "Configuration for the `webhdfs` sink.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled for this sink.",
              "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "batch": {
              "$ref": "#/$defs/vector::sinks::util::batch::BatchConfig%3Cvector::sinks::util::batch::BulkSizeBasedDefaultBatchSettings%3E",
              "description": "Event batching behavior.",
              "default": {
                "max_bytes": null,
                "max_events": null,
                "timeout_secs": null
              }
            },
            "compression": {
              "$ref": "#/$defs/vector::sinks::util::buffer::compression::Compression",
              "title": "Compression configuration.",
              "description": "All compression algorithms use the default compression level unless otherwise specified.",
              "default": "gzip"
            },
            "endpoint": {
              "title": "An HDFS cluster consists of a single NameNode, a master server that manages the file system namespace and regulates access to files by clients.",
              "description": "The endpoint is the HDFS's web restful HTTP API endpoint.\n\nFor more information, see the [HDFS Architecture][hdfs_arch] documentation.\n\n[hdfs_arch]: <https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#NameNode_and_DataNodes>",
              "default": "",
              "type": "string"
            },
            "prefix": {
              "title": "A prefix to apply to all keys.",
              "description": "Prefixes are useful for partitioning objects, such as by creating a blob key that\nstores blobs under a particular directory. If using a prefix for this purpose, it must end\nin `/` to act as a directory path. A trailing `/` is **not** automatically added.\n\nThe final file path is in the format of `{root}/{prefix}{suffix}`.",
              "default": "",
              "type": "string"
            },
            "root": {
              "title": "The root path for WebHDFS.",
              "description": "Must be a valid directory.\n\nThe final file path is in the format of `{root}/{prefix}{suffix}`.",
              "default": "",
              "type": "string"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfigWithFraming",
          "description": "Encoding configuration."
        }
      ]
    },
    "vector::sinks::websocket::config::WebSocketSinkConfig": {
      "description": "Configuration for the `websocket` sink.",
      "type": "object",
      "required": [
        "encoding",
        "uri"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::AcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled for this sink.",
          "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "encoding": {
          "$ref": "#/$defs/vector::codecs::encoding::config::EncodingConfig",
          "description": "Configures how events are encoded into raw bytes."
        },
        "ping_interval": {
          "title": "The interval, in seconds, between sending [Ping][ping]s to the remote peer.",
          "description": "If this option is not configured, pings are not sent on an interval.\n\nIf the `ping_timeout` is not set, pings are still sent but there is no expectation of pong\nresponse times.\n\n[ping]: <https://www.rfc-editor.org/rfc/rfc6455#section-5.5.2>",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "ping_timeout": {
          "title": "The number of seconds to wait for a [Pong][pong] response from the remote peer.",
          "description": "If a response is not received within this time, the connection is re-established.\n\n[pong]: <https://www.rfc-editor.org/rfc/rfc6455#section-5.5.3>",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        },
        "uri": {
          "title": "The WebSocket URI to connect to.",
          "description": "This should include the protocol and host, but can also include the port, path, and any other valid part of a URI.",
          "type": "string"
        }
      }
    },
    "vector::sources::Sources": {
      "description": "Configurable sources in Vector.",
      "oneOf": [
        {
          "description": "Collect events from AMQP 0.9.1 compatible brokers like RabbitMQ.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::amqp::AmqpSourceConfig",
              "title": "Configuration for the `amqp` source.",
              "description": "Supports AMQP version 0.9.1"
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect events from AMQP 0.9.1 compatible brokers like RabbitMQ.",
                  "const": "amqp"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics from Apache's HTTPD server.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::apache_metrics::ApacheMetricsConfig",
              "description": "Configuration for the `apache_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics from Apache's HTTPD server.",
                  "const": "apache_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Collect Docker container stats for tasks running in AWS ECS and AWS Fargate.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::aws_ecs_metrics::AwsEcsMetricsSourceConfig",
              "description": "Configuration for the `aws_ecs_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect Docker container stats for tasks running in AWS ECS and AWS Fargate.",
                  "const": "aws_ecs_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from AWS Kinesis Firehose.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::aws_kinesis_firehose::AwsKinesisFirehoseConfig",
              "description": "Configuration for the `aws_kinesis_firehose` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from AWS Kinesis Firehose.",
                  "const": "aws_kinesis_firehose"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from AWS S3.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::aws_s3::AwsS3Config",
              "description": "Configuration for the `aws_s3` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from AWS S3.",
                  "const": "aws_s3"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from AWS SQS.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::aws_sqs::config::AwsSqsConfig",
              "description": "Configuration for the `aws_sqs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from AWS SQS.",
                  "const": "aws_sqs"
                }
              }
            }
          ]
        },
        {
          "description": "Receive logs, metrics, and traces collected by a Datadog Agent.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::datadog_agent::DatadogAgentConfig",
              "description": "Configuration for the `datadog_agent` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive logs, metrics, and traces collected by a Datadog Agent.",
                  "const": "datadog_agent"
                }
              }
            }
          ]
        },
        {
          "description": "Generate fake log events, which can be useful for testing and demos.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::demo_logs::DemoLogsConfig",
              "description": "Configuration for the `demo_logs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Generate fake log events, which can be useful for testing and demos.",
                  "const": "demo_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Collect DNS logs from a dnstap-compatible server.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::dnstap::DnstapConfig",
              "description": "Configuration for the `dnstap` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect DNS logs from a dnstap-compatible server.",
                  "const": "dnstap"
                }
              }
            }
          ]
        },
        {
          "description": "Collect container logs from a Docker Daemon.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::docker_logs::DockerLogsConfig",
              "description": "Configuration for the `docker_logs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect container logs from a Docker Daemon.",
                  "const": "docker_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Receive metrics from collected by a EventStoreDB.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::eventstoredb_metrics::EventStoreDbConfig",
              "description": "Configuration for the `eventstoredb_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive metrics from collected by a EventStoreDB.",
                  "const": "eventstoredb_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Collect output from a process running on the host.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::exec::ExecConfig",
              "description": "Configuration for the `exec` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect output from a process running on the host.",
                  "const": "exec"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from files.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::file::FileConfig",
              "description": "Configuration for the `file` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from files.",
                  "const": "file"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from a file descriptor.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::file_descriptors::file_descriptor::FileDescriptorSourceConfig",
              "description": "Configuration for the `file_descriptor` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from a file descriptor.",
                  "const": "file_descriptor"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from a Fluentd or Fluent Bit agent.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::fluent::FluentConfig",
              "description": "Configuration for the `fluent` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from a Fluentd or Fluent Bit agent.",
                  "const": "fluent"
                }
              }
            }
          ]
        },
        {
          "description": "Fetch observability events from GCP's Pub/Sub messaging system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::gcp_pubsub::PubsubConfig",
              "description": "Configuration for the `gcp_pubsub` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Fetch observability events from GCP's Pub/Sub messaging system.",
                  "const": "gcp_pubsub"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from Heroku's Logplex, the router responsible for receiving logs from your Heroku apps.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::heroku_logs::LogplexConfig",
              "description": "Configuration for `heroku_logs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from Heroku's Logplex, the router responsible for receiving logs from your Heroku apps.",
                  "const": "heroku_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metric data from the local system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::host_metrics::HostMetricsConfig",
              "description": "Configuration for the `host_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metric data from the local system.",
                  "const": "host_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Host an HTTP endpoint to receive logs.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::http_server::HttpConfig",
              "description": "Configuration for the `http` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Host an HTTP endpoint to receive logs.",
                  "const": "http"
                }
              }
            }
          ]
        },
        {
          "description": "Pull observability data from an HTTP server at a configured interval.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::http_client::client::HttpClientConfig",
              "description": "Configuration for the `http_client` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Pull observability data from an HTTP server at a configured interval.",
                  "const": "http_client"
                }
              }
            }
          ]
        },
        {
          "description": "Host an HTTP endpoint to receive logs.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::http_server::SimpleHttpConfig",
              "description": "Configuration for the `http_server` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Host an HTTP endpoint to receive logs.",
                  "const": "http_server"
                }
              }
            }
          ]
        },
        {
          "description": "Expose internal log messages emitted by the running Vector instance.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::internal_logs::InternalLogsConfig",
              "description": "Configuration for the `internal_logs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Expose internal log messages emitted by the running Vector instance.",
                  "const": "internal_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Expose internal metrics emitted by the running Vector instance.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::internal_metrics::InternalMetricsConfig",
              "description": "Configuration for the `internal_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Expose internal metrics emitted by the running Vector instance.",
                  "const": "internal_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from JournalD.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::journald::JournaldConfig",
              "description": "Configuration for the `journald` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from JournalD.",
                  "const": "journald"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from Apache Kafka.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::kafka::KafkaSourceConfig",
              "description": "Configuration for the `kafka` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from Apache Kafka.",
                  "const": "kafka"
                }
              }
            }
          ]
        },
        {
          "description": "Collect Pod logs from Kubernetes Nodes.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::kubernetes_logs::Config",
              "description": "Configuration for the `kubernetes_logs` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect Pod logs from Kubernetes Nodes.",
                  "const": "kubernetes_logs"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from a Logstash agent.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::logstash::LogstashConfig",
              "description": "Configuration for the `logstash` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from a Logstash agent.",
                  "const": "logstash"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics from the MongoDB database.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::mongodb_metrics::MongoDbMetricsConfig",
              "description": "Configuration for the `mongodb_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics from the MongoDB database.",
                  "const": "mongodb_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Read observability data from subjects on the NATS messaging system.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::nats::NatsSourceConfig",
              "description": "Configuration for the `nats` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Read observability data from subjects on the NATS messaging system.",
                  "const": "nats"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics from NGINX.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::nginx_metrics::NginxMetricsConfig",
              "description": "Configuration for the `nginx_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics from NGINX.",
                  "const": "nginx_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Receive OTLP data through gRPC or HTTP.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::opentelemetry::OpentelemetryConfig",
              "description": "Configuration for the `opentelemetry` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive OTLP data through gRPC or HTTP.",
                  "const": "opentelemetry"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics from the PostgreSQL database.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::postgresql_metrics::PostgresqlMetricsConfig",
              "description": "Configuration for the `postgresql_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics from the PostgreSQL database.",
                  "const": "postgresql_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Receive metrics via the Prometheus Pushgateway protocol.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::prometheus::pushgateway::PrometheusPushgatewayConfig",
              "description": "Configuration for the `prometheus_pushgateway` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive metrics via the Prometheus Pushgateway protocol.",
                  "const": "prometheus_pushgateway"
                }
              }
            }
          ]
        },
        {
          "description": "Receive metric via the Prometheus Remote Write protocol.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::prometheus::remote_write::PrometheusRemoteWriteConfig",
              "description": "Configuration for the `prometheus_remote_write` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive metric via the Prometheus Remote Write protocol.",
                  "const": "prometheus_remote_write"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics from Prometheus exporters.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::prometheus::scrape::PrometheusScrapeConfig",
              "description": "Configuration for the `prometheus_scrape` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics from Prometheus exporters.",
                  "const": "prometheus_scrape"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs from Apache Pulsar.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::pulsar::PulsarSourceConfig",
              "description": "Configuration for the `pulsar` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs from Apache Pulsar.",
                  "const": "pulsar"
                }
              }
            }
          ]
        },
        {
          "description": "Collect observability data from Redis.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::redis::RedisSourceConfig",
              "description": "Configuration for the `redis` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect observability data from Redis.",
                  "const": "redis"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs over a socket.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::socket::SocketConfig",
              "description": "Configuration for the `socket` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs over a socket.",
                  "const": "socket"
                }
              }
            }
          ]
        },
        {
          "description": "Receive logs from Splunk.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::splunk_hec::SplunkConfig",
              "description": "Configuration for the `splunk_hec` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Receive logs from Splunk.",
                  "const": "splunk_hec"
                }
              }
            }
          ]
        },
        {
          "description": "Produce static metrics defined in configuration.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::static_metrics::StaticMetricsConfig",
              "description": "Configuration for the `static_metrics` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Produce static metrics defined in configuration.",
                  "const": "static_metrics"
                }
              }
            }
          ]
        },
        {
          "description": "Collect metrics emitted by the StatsD aggregator.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::statsd::StatsdConfig",
              "description": "Configuration for the `statsd` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect metrics emitted by the StatsD aggregator.",
                  "const": "statsd"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs sent via stdin.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::file_descriptors::stdin::StdinConfig",
              "description": "Configuration for the `stdin` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs sent via stdin.",
                  "const": "stdin"
                }
              }
            }
          ]
        },
        {
          "description": "Collect logs sent via Syslog.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::syslog::SyslogConfig",
              "description": "Configuration for the `syslog` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect logs sent via Syslog.",
                  "const": "syslog"
                }
              }
            }
          ]
        },
        {
          "description": "Unit test.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::config::unit_test::unit_test_components::UnitTestSourceConfig",
              "description": "Configuration for the `unit_test` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Unit test.",
                  "const": "unit_test"
                }
              }
            }
          ]
        },
        {
          "description": "Unit test stream.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::config::unit_test::unit_test_components::UnitTestStreamSourceConfig",
              "description": "Configuration for the `unit_test_stream` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Unit test stream.",
                  "const": "unit_test_stream"
                }
              }
            }
          ]
        },
        {
          "description": "Collect observability data from a Vector instance.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::sources::vector::VectorConfig",
              "description": "Configuration for the `vector` source."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collect observability data from a Vector instance.",
                  "const": "vector"
                }
              }
            }
          ]
        }
      ]
    },
    "vector::sources::amqp::AmqpSourceConfig": {
      "title": "Configuration for the `amqp` source.",
      "description": "Supports AMQP version 0.9.1",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled by this source.",
              "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "consumer": {
              "description": "The identifier for the consumer.",
              "default": "vector",
              "type": "string"
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "exchange_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "description": "The `AMQP` exchange key.",
              "default": "exchange"
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "bytes"
              }
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "offset_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "description": "The `AMQP` offset key.",
              "default": "offset"
            },
            "queue": {
              "description": "The name of the queue to consume.",
              "default": "vector",
              "type": "string"
            },
            "routing_key_field": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "description": "The `AMQP` routing key.",
              "default": "routing"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::amqp::AmqpConfig",
          "description": "AMQP connection options."
        }
      ]
    },
    "vector::sources::apache_metrics::ApacheMetricsConfig": {
      "description": "Configuration for the `apache_metrics` source.",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "endpoints": {
          "description": "The list of `mod_status` endpoints to scrape metrics from.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "namespace": {
          "title": "The namespace of the metric.",
          "description": "Disabled if empty.",
          "default": "apache",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes.",
          "default": 15
        }
      }
    },
    "vector::sources::aws_ecs_metrics::AwsEcsMetricsSourceConfig": {
      "description": "Configuration for the `aws_ecs_metrics` source.",
      "type": "object",
      "properties": {
        "endpoint": {
          "title": "Base URI of the task metadata endpoint.",
          "description": "If empty, the URI is automatically discovered based on the latest version detected.\n\nBy default:\n- The version 4 endpoint base URI is stored in the environment variable `ECS_CONTAINER_METADATA_URI_V4`.\n- The version 3 endpoint base URI is stored in the environment variable `ECS_CONTAINER_METADATA_URI`.\n- The version 2 endpoint base URI is `169.254.170.2/v2/`.",
          "default": "http://169.254.170.2/v2",
          "type": "string"
        },
        "namespace": {
          "title": "The namespace of the metric.",
          "description": "Disabled if empty.",
          "default": "awsecs",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes, in seconds.",
          "default": 15
        },
        "version": {
          "title": "The version of the task metadata endpoint to use.",
          "description": "If empty, the version is automatically discovered based on environment variables.\n\nBy default:\n- Version 4 is used if the environment variable `ECS_CONTAINER_METADATA_URI_V4` is defined.\n- Version 3 is used if the environment variable `ECS_CONTAINER_METADATA_URI_V4` is not defined, but the\n  environment variable `ECS_CONTAINER_METADATA_URI` _is_ defined.\n- Version 2 is used if neither of the environment variables `ECS_CONTAINER_METADATA_URI_V4` or\n  `ECS_CONTAINER_METADATA_URI` are defined.",
          "default": "v2",
          "oneOf": [
            {
              "title": "Version 2.",
              "description": "More information about version 2 of the task metadata endpoint can be found [here][endpoint_v2].\n\n[endpoint_v2]: <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v2.html>",
              "const": "v2"
            },
            {
              "title": "Version 3.",
              "description": "More information about version 3 of the task metadata endpoint can be found [here][endpoint_v3].\n\n[endpoint_v3]: <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v3.html>",
              "const": "v3"
            },
            {
              "title": "Version 4.",
              "description": "More information about version 4 of the task metadata endpoint can be found [here][endpoint_v4].\n\n[endpoint_v4]: <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4.html>",
              "const": "v4"
            }
          ]
        }
      }
    },
    "vector::sources::aws_kinesis_firehose::AwsKinesisFirehoseConfig": {
      "description": "Configuration for the `aws_kinesis_firehose` source.",
      "type": "object",
      "required": [
        "address",
        "store_access_key"
      ],
      "properties": {
        "access_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "An access key to authenticate requests against.",
          "description": "AWS Kinesis Firehose can be configured to pass along a user-configurable access key with each request. If\nconfigured, `access_key` should be set to the same value. Otherwise, all requests are allowed.",
          "deprecated": true
        },
        "access_keys": {
          "title": "A list of access keys to authenticate requests against.",
          "description": "AWS Kinesis Firehose can be configured to pass along a user-configurable access key with each request. If\nconfigured, `access_keys` should be set to the same value. Otherwise, all requests are allowed.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString"
          }
        },
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "description": "The socket address to listen for connections on."
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "record_compression": {
          "title": "The compression scheme to use for decompressing records within the Firehose message.",
          "description": "Some services, like AWS CloudWatch Logs, [compresses the events with gzip][events_with_gzip],\nbefore sending them AWS Kinesis Firehose. This option can be used to automatically decompress\nthem before forwarding them to the next component.\n\nNote that this is different from [Content encoding option][encoding_option] of the\nFirehose HTTP endpoint destination. That option controls the content encoding of the entire HTTP request.\n\n[events_with_gzip]: <https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html>\n[encoding_option]: <https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-http>",
          "default": "auto",
          "oneOf": [
            {
              "title": "Automatically attempt to determine the compression scheme.",
              "description": "The compression scheme of the object is determined by looking at its file signature, also known\nas [magic bytes][magic_bytes].\n\nIf the record fails to decompress with the discovered format, the record is forwarded as is.\nThus, if you know the records are always gzip encoded (for example, if they are coming from AWS CloudWatch Logs),\nset `gzip` in this field so that any records that are not-gzipped are rejected.\n\n[magic_bytes]: <https://en.wikipedia.org/wiki/List_of_file_signatures>",
              "const": "auto"
            },
            {
              "description": "Uncompressed.",
              "const": "none"
            },
            {
              "description": "GZIP.",
              "const": "gzip"
            }
          ]
        },
        "store_access_key": {
          "title": "Whether or not to store the AWS Firehose Access Key in event secrets.",
          "description": "If set to `true`, when incoming requests contains an access key sent by AWS Firehose, it is kept in the\nevent secrets as \"aws_kinesis_firehose_access_key\".",
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::aws_s3::AwsS3Config": {
      "description": "Configuration for the `aws_s3` source.",
      "default": {
        "region": null,
        "endpoint": null,
        "compression": "auto",
        "strategy": "sqs",
        "sqs": null,
        "assume_role": null,
        "auth": {
          "load_timeout_secs": null,
          "imds": {
            "max_attempts": 4,
            "connect_timeout_seconds": 1,
            "read_timeout_seconds": 1
          },
          "region": null
        },
        "multiline": null,
        "acknowledgements": {
          "enabled": null
        },
        "tls_options": null,
        "log_namespace": null,
        "framing": {
          "method": "newline_delimited"
        },
        "decoding": {
          "codec": "bytes"
        }
      },
      "allOf": [
        {
          "type": "object",
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled by this source.",
              "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "assume_role": {
              "title": "The ARN of an [IAM role][iam_role] to assume at startup.",
              "description": "[iam_role]: <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html>",
              "deprecated": true,
              "type": [
                "string",
                "null"
              ]
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "compression": {
              "description": "The compression scheme used for decompressing objects retrieved from S3.",
              "oneOf": [
                {
                  "title": "Automatically attempt to determine the compression scheme.",
                  "description": "The compression scheme of the object is determined from its `Content-Encoding` and\n`Content-Type` metadata, as well as the key suffix (for example, `.gz`).\n\nIt is set to `none` if the compression scheme cannot be determined.",
                  "const": "auto"
                },
                {
                  "description": "Uncompressed.",
                  "const": "none"
                },
                {
                  "description": "GZIP.",
                  "const": "gzip"
                },
                {
                  "description": "ZSTD.",
                  "const": "zstd"
                }
              ]
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "newline_delimited"
              }
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "multiline": {
              "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::multiline_config::MultilineConfig%3E",
              "title": "Multiline aggregation configuration.",
              "description": "If not specified, multiline aggregation is disabled."
            },
            "sqs": {
              "description": "Configuration options for SQS.",
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "description": "SQS configuration options.",
                  "allOf": [
                    {
                      "type": "object",
                      "required": [
                        "queue_url"
                      ],
                      "properties": {
                        "client_concurrency": {
                          "title": "Number of concurrent tasks to create for polling the queue for messages.",
                          "description": "Defaults to the number of available CPUs on the system.\n\nShould not typically need to be changed, but it can sometimes be beneficial to raise this\nvalue when there is a high rate of messages being pushed into the queue and the objects\nbeing fetched are small. In these cases, system resources may not be fully utilized without\nfetching more messages per second, as the SQS message consumption rate affects the S3 object\nretrieval rate.",
                          "type": [
                            "integer",
                            "null"
                          ],
                          "maximum": 9007199254740990.0,
                          "minimum": 1.0
                        },
                        "delete_failed_message": {
                          "title": "Whether to delete non-retryable messages.",
                          "description": "If a message is rejected by the sink and not retryable, it is deleted from the queue.",
                          "default": true,
                          "type": "boolean"
                        },
                        "delete_message": {
                          "title": "Whether to delete the message once it is processed.",
                          "description": "It can be useful to set this to `false` for debugging or during the initial setup.",
                          "default": true,
                          "type": "boolean"
                        },
                        "max_number_of_messages": {
                          "title": "Maximum number of messages to poll from SQS in a batch",
                          "description": "Defaults to 10\n\nShould be set to a smaller value when the files are large to help prevent the ingestion of\none file from causing the other files to exceed the visibility_timeout. Valid values are 1 - 10",
                          "default": 10,
                          "type": "integer",
                          "maximum": 4294967295.0,
                          "minimum": 0.0
                        },
                        "poll_secs": {
                          "title": "How long to wait while polling the queue for new messages, in seconds.",
                          "description": "Generally, this should not be changed unless instructed to do so, as if messages are available,\nthey are always consumed, regardless of the value of `poll_secs`.",
                          "default": 15,
                          "type": "integer",
                          "maximum": 4294967295.0,
                          "minimum": 0.0
                        },
                        "queue_url": {
                          "description": "The URL of the SQS queue to poll for bucket notifications.",
                          "type": "string",
                          "format": "uri"
                        },
                        "tls_options": {
                          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
                          "default": null
                        },
                        "visibility_timeout_secs": {
                          "title": "The visibility timeout to use for messages, in seconds.",
                          "description": "This controls how long a message is left unavailable after it is received. If a message is received, and\ntakes longer than `visibility_timeout_secs` to process and delete the message from the queue, it is made available again for another consumer.\n\nThis can happen if there is an issue between consuming a message and deleting it.",
                          "default": 300,
                          "type": "integer",
                          "maximum": 4294967295.0,
                          "minimum": 0.0
                        }
                      }
                    },
                    {
                      "description": "Client timeout configuration for AWS operations.",
                      "default": null,
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "description": "Client timeout configuration for AWS operations.",
                          "type": "object",
                          "properties": {
                            "connect_timeout_seconds": {
                              "title": "The connection timeout for AWS requests",
                              "description": "Limits the amount of time allowed to initiate a socket connection.",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "operation_timeout_seconds": {
                              "title": "The operation timeout for AWS requests",
                              "description": "Limits the amount of time allowed for an operation to be fully serviced; an\noperation represents the full request/response lifecycle of a call to a service.\nTake care when configuring this settings to allow enough time for the polling\ninterval configured in `poll_secs`",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            },
                            "read_timeout_seconds": {
                              "title": "The read timeout for AWS requests",
                              "description": "Limits the amount of time allowed to read the first byte of a response from the\ntime the request is initiated. Take care when configuring this settings to allow\nenough time for the polling interval configured in `poll_secs`",
                              "type": [
                                "integer",
                                "null"
                              ],
                              "maximum": 9007199254740990.0,
                              "minimum": 0.0
                            }
                          }
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "strategy": {
              "description": "The strategy to use to consume objects from S3.",
              "oneOf": [
                {
                  "title": "Consumes objects by processing bucket notification events sent to an [AWS SQS queue][aws_sqs].",
                  "description": "[aws_sqs]: <https://aws.amazon.com/sqs/>",
                  "const": "sqs"
                }
              ]
            },
            "tls_options": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        }
      ]
    },
    "vector::sources::aws_sqs::config::AwsSqsConfig": {
      "description": "Configuration for the `aws_sqs` source.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "queue_url"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled by this source.",
              "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "auth": {
              "$ref": "#/$defs/vector::aws::auth::AwsAuthentication",
              "description": "Configuration of the authentication strategy for interacting with AWS services.",
              "default": {
                "load_timeout_secs": null,
                "imds": {
                  "max_attempts": 4,
                  "connect_timeout_seconds": 1,
                  "read_timeout_seconds": 1
                },
                "region": null
              }
            },
            "client_concurrency": {
              "title": "Number of concurrent tasks to create for polling the queue for messages.",
              "description": "Defaults to the number of available CPUs on the system.\n\nShould not typically need to be changed, but it can sometimes be beneficial to raise this\nvalue when there is a high rate of messages being pushed into the queue and the messages\nbeing fetched are small. In these cases, system resources may not be fully utilized without\nfetching more messages per second, as it spends more time fetching the messages than\nprocessing them.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "delete_message": {
              "title": "Whether to delete the message once it is processed.",
              "description": "It can be useful to set this to `false` for debugging or during the initial setup.",
              "default": true,
              "type": "boolean"
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "bytes"
              }
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "poll_secs": {
              "title": "How long to wait while polling the queue for new messages, in seconds.",
              "description": "Generally, this should not be changed unless instructed to do so, as if messages are available,\nthey are always consumed, regardless of the value of `poll_secs`.",
              "default": 15,
              "type": "integer",
              "maximum": 4294967295.0,
              "minimum": 0.0
            },
            "queue_url": {
              "description": "The URL of the SQS queue to poll for messages.",
              "type": "string"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            },
            "visibility_timeout_secs": {
              "title": "The visibility timeout to use for messages, in seconds.",
              "description": "This controls how long a message is left unavailable after it is received. If a message is received, and\ntakes longer than `visibility_timeout_secs` to process and delete the message from the queue, it is made available again for another consumer.\n\nThis can happen if there is an issue between consuming a message and deleting it.",
              "default": 300,
              "type": "integer",
              "maximum": 4294967295.0,
              "minimum": 0.0
            }
          }
        },
        {
          "$ref": "#/$defs/vector::aws::region::RegionOrEndpoint",
          "description": "Configuration of the region/endpoint to use when interacting with an AWS service."
        }
      ]
    },
    "vector::sources::datadog_agent::DatadogAgentConfig": {
      "description": "Configuration for the `datadog_agent` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to accept connections on.",
          "description": "It _must_ include a port."
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "disable_logs": {
          "description": "If this is set to `true`, logs are not accepted by the component.",
          "default": false,
          "type": "boolean"
        },
        "disable_metrics": {
          "description": "If this is set to `true`, metrics (beta) are not accepted by the component.",
          "default": false,
          "type": "boolean"
        },
        "disable_traces": {
          "description": "If this is set to `true`, traces (alpha) are not accepted by the component.",
          "default": false,
          "type": "boolean"
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "multiple_outputs": {
          "title": "If this is set to `true`, logs, metrics (beta), and traces (alpha) are sent to different outputs.",
          "description": "For a source component named `agent`, the received logs, metrics (beta), and traces (alpha) can then be\nconfigured as input to other components by specifying `agent.logs`, `agent.metrics`, and\n`agent.traces`, respectively.",
          "default": false,
          "type": "boolean"
        },
        "parse_ddtags": {
          "description": "If this is set to `true`, when log events contain the field `ddtags`, the string value that\ncontains a list of key:value pairs set by the Agent is parsed and expanded into an array.",
          "default": false,
          "type": "boolean"
        },
        "store_api_key": {
          "description": "If this is set to `true`, when incoming events contain a Datadog API key, it is\nstored in the event metadata and used if the event is sent to a Datadog sink.",
          "default": true,
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::demo_logs::DemoLogsConfig": {
      "description": "Configuration for the `demo_logs` source.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "count": {
              "title": "The total number of lines to output.",
              "description": "By default, the source continuously prints logs (infinitely).",
              "default": 9223372036854775807,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "bytes"
              }
            },
            "interval": {
              "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
              "title": "The amount of time, in seconds, to pause between each batch of output lines.",
              "description": "The default is one batch per second. To remove the delay and output batches as quickly as possible, set\n`interval` to `0.0`.",
              "default": 1.0
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        },
        {
          "description": "Output format configuration.",
          "oneOf": [
            {
              "description": "Lines are chosen at random from the list specified using `lines`.",
              "type": "object",
              "required": [
                "format",
                "lines"
              ],
              "properties": {
                "format": {
                  "description": "Lines are chosen at random from the list specified using `lines`.",
                  "const": "shuffle"
                },
                "lines": {
                  "description": "The list of lines to output.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "sequence": {
                  "description": "If `true`, each output line starts with an increasing sequence number, beginning with 0.",
                  "default": false,
                  "type": "boolean"
                }
              }
            },
            {
              "title": "Randomly generated logs in [Apache common][apache_common] format.",
              "description": "[apache_common]: <https://httpd.apache.org/docs/current/logs.html#common>",
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "title": "Randomly generated logs in [Apache common][apache_common] format.",
                  "description": "[apache_common]: <https://httpd.apache.org/docs/current/logs.html#common>",
                  "const": "apache_common"
                }
              }
            },
            {
              "title": "Randomly generated logs in [Apache error][apache_error] format.",
              "description": "[apache_error]: <https://httpd.apache.org/docs/current/logs.html#errorlog>",
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "title": "Randomly generated logs in [Apache error][apache_error] format.",
                  "description": "[apache_error]: <https://httpd.apache.org/docs/current/logs.html#errorlog>",
                  "const": "apache_error"
                }
              }
            },
            {
              "title": "Randomly generated logs in Syslog format ([RFC 5424][syslog_5424]).",
              "description": "[syslog_5424]: <https://tools.ietf.org/html/rfc5424>",
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "title": "Randomly generated logs in Syslog format ([RFC 5424][syslog_5424]).",
                  "description": "[syslog_5424]: <https://tools.ietf.org/html/rfc5424>",
                  "const": "syslog"
                }
              }
            },
            {
              "title": "Randomly generated logs in Syslog format ([RFC 3164][syslog_3164]).",
              "description": "[syslog_3164]: <https://tools.ietf.org/html/rfc3164>",
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "title": "Randomly generated logs in Syslog format ([RFC 3164][syslog_3164]).",
                  "description": "[syslog_3164]: <https://tools.ietf.org/html/rfc3164>",
                  "const": "bsd_syslog"
                }
              }
            },
            {
              "title": "Randomly generated HTTP server logs in [JSON][json] format.",
              "description": "[json]: <https://en.wikipedia.org/wiki/JSON>",
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "title": "Randomly generated HTTP server logs in [JSON][json] format.",
                  "description": "[json]: <https://en.wikipedia.org/wiki/JSON>",
                  "const": "json"
                }
              }
            }
          ]
        }
      ]
    },
    "vector::sources::dnstap::DnstapConfig": {
      "description": "Configuration for the `dnstap` source.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "host_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Overrides the name of the log field used to add the source path to each event.",
              "description": "The value is the socket path itself.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global settings.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "lowercase_hostnames": {
              "description": "Whether to downcase all DNSTAP hostnames received for consistency",
              "default": false,
              "type": "boolean"
            },
            "max_frame_handling_tasks": {
              "description": "Maximum number of frames that can be processed concurrently.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 4294967295.0,
              "minimum": 0.0
            },
            "max_frame_length": {
              "title": "Maximum DNSTAP frame length that the source accepts.",
              "description": "If any frame is longer than this, it is discarded.",
              "default": 102400,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "multithreaded": {
              "description": "Whether or not to concurrently process DNSTAP frames.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "raw_data_only": {
              "title": "Whether or not to skip parsing or decoding of DNSTAP frames.",
              "description": "If set to `true`, frames are not parsed or decoded. The raw frame data is set as a field on the event\n(called `rawData`) and encoded as a base64 string.",
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        },
        {
          "description": "Listening mode for the `dnstap` source.",
          "oneOf": [
            {
              "description": "Listen on TCP.",
              "allOf": [
                {
                  "description": "TCP configuration for the `dnstap` source.",
                  "type": "object",
                  "required": [
                    "address"
                  ],
                  "properties": {
                    "address": {
                      "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                      "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                      "description": "If a socket address is used, it _must_ include a port."
                    },
                    "connection_limit": {
                      "description": "The maximum number of TCP connections that are allowed at any given time.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 4294967295.0,
                      "minimum": 0.0
                    },
                    "keepalive": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                    },
                    "max_connection_duration_secs": {
                      "title": "Maximum duration to keep each connection open. Connections open for longer than this duration are closed.",
                      "description": "This is helpful for load balancing long-lived connections.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "permit_origin": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
                    },
                    "port_key": {
                      "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
                      "title": "Overrides the name of the log field used to add the peer host's port to each event.",
                      "description": "The value will be the peer host's port i.e. `9000`.\n\nBy default, `\"port\"` is used.\n\nSet to `\"\"` to suppress this key.",
                      "default": "port"
                    },
                    "receive_buffer_bytes": {
                      "description": "The size of the receive buffer used for each connection.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "shutdown_timeout_secs": {
                      "$ref": "#/$defs/serde_with::DurationSeconds",
                      "description": "The timeout before a connection is forcefully closed during shutdown.",
                      "default": 30
                    },
                    "tls": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on TCP.",
                      "const": "tcp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Listen on a Unix domain socket",
              "allOf": [
                {
                  "description": "Unix domain socket configuration for the `dnstap` source.",
                  "type": "object",
                  "required": [
                    "socket_path"
                  ],
                  "properties": {
                    "socket_file_mode": {
                      "title": "Unix file mode bits to be applied to the unix socket file as its designated file permissions.",
                      "description": "Note: The file mode value can be specified in any numeric format supported by your configuration\nlanguage, but it is most intuitive to use an octal number.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 4294967295.0,
                      "minimum": 0.0
                    },
                    "socket_path": {
                      "$ref": "#/$defs/stdlib::PathBuf",
                      "title": "Absolute path to the socket file to read DNSTAP data from.",
                      "description": "The DNS server must be configured to send its DNSTAP data to this socket file. The socket file is created\nif it doesn't already exist when the source first starts."
                    },
                    "socket_receive_buffer_size": {
                      "title": "The size, in bytes, of the receive buffer used for the socket.",
                      "description": "This should not typically needed to be changed.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "socket_send_buffer_size": {
                      "title": "The size, in bytes, of the send buffer used for the socket.",
                      "description": "This should not typically needed to be changed.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on a Unix domain socket",
                      "const": "unix"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::sources::docker_logs::DockerLogsConfig": {
      "description": "Configuration for the `docker_logs` source.",
      "default": {
        "host_key": null,
        "docker_host": null,
        "exclude_containers": null,
        "include_containers": null,
        "include_labels": null,
        "include_images": null,
        "partial_event_marker_field": "_partial",
        "auto_partial_merge": true,
        "retry_backoff_secs": 2,
        "multiline": null,
        "tls": null,
        "log_namespace": null
      },
      "type": "object",
      "properties": {
        "auto_partial_merge": {
          "description": "Enables automatic merging of partial events.",
          "type": "boolean"
        },
        "docker_host": {
          "title": "Docker host to connect to.",
          "description": "Use an HTTPS URL to enable TLS encryption.\n\nIf absent, the `DOCKER_HOST` environment variable is used. If `DOCKER_HOST` is also absent,\nthe default Docker local socket (`/var/run/docker.sock` on Unix platforms,\n`//./pipe/docker_engine` on Windows) is used.",
          "type": [
            "string",
            "null"
          ]
        },
        "exclude_containers": {
          "title": "A list of container IDs or names of containers to exclude from log collection.",
          "description": "Matching is prefix first, so specifying a value of `foo` would match any container named `foo` as well as any\ncontainer whose name started with `foo`. This applies equally whether matching container IDs or names.\n\nBy default, the source collects logs for all containers. If `exclude_containers` is configured, any\ncontainer that matches a configured exclusion is excluded even if it is also included with\n`include_containers`, so care should be taken when using prefix matches as they cannot be overridden by a\ncorresponding entry in `include_containers`, for example, excluding `foo` by attempting to include `foo-specific-id`.\n\nThis can be used in conjunction with `include_containers`.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Overrides the name of the log field used to add the current hostname to each event.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
        },
        "include_containers": {
          "title": "A list of container IDs or names of containers to include in log collection.",
          "description": "Matching is prefix first, so specifying a value of `foo` would match any container named `foo` as well as any\ncontainer whose name started with `foo`. This applies equally whether matching container IDs or names.\n\nBy default, the source collects logs for all containers. If `include_containers` is configured, only\ncontainers that match a configured inclusion and are also not excluded get matched.\n\nThis can be used in conjunction with `exclude_containers`.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "include_images": {
          "title": "A list of image names to match against.",
          "description": "If not provided, all images are included.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "include_labels": {
          "title": "A list of container object labels to match against when filtering running containers.",
          "description": "Labels should follow the syntax described in the [Docker object labels](https://docs.docker.com/config/labels-custom-metadata/) documentation.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "multiline": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::multiline_config::MultilineConfig%3E",
          "title": "Multiline aggregation configuration.",
          "description": "If not specified, multiline aggregation is disabled."
        },
        "partial_event_marker_field": {
          "title": "Overrides the name of the log field used to mark an event as partial.",
          "description": "If `auto_partial_merge` is disabled, partial events are emitted with a log field, set by this\nconfiguration value, indicating that the event is not complete.",
          "default": "_partial",
          "type": [
            "string",
            "null"
          ]
        },
        "retry_backoff_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The amount of time to wait before retrying after an error.",
          "default": 2
        },
        "tls": {
          "title": "Configuration of TLS when connecting to the Docker daemon.",
          "description": "Only relevant when connecting to Docker with an HTTPS URL.\n\nIf not configured, the environment variable `DOCKER_CERT_PATH` is used. If `DOCKER_CERT_PATH` is absent, then` DOCKER_CONFIG` is used. If both environment variables are absent, the certificates in `~/.docker/` are read.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "title": "Configuration of TLS when connecting to the Docker daemon.",
              "description": "Only relevant when connecting to Docker with an HTTPS URL.\n\nIf not configured, the environment variable `DOCKER_CERT_PATH` is used. If `DOCKER_CERT_PATH` is absent, then` DOCKER_CONFIG` is used. If both environment variables are absent, the certificates in `~/.docker/` are read.",
              "type": "object",
              "required": [
                "ca_file",
                "crt_file",
                "key_file"
              ],
              "properties": {
                "ca_file": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "description": "Path to the CA certificate file."
                },
                "crt_file": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "description": "Path to the TLS certificate file."
                },
                "key_file": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "description": "Path to the TLS key file."
                }
              }
            }
          ]
        }
      }
    },
    "vector::sources::eventstoredb_metrics::EventStoreDbConfig": {
      "description": "Configuration for the `eventstoredb_metrics` source.",
      "type": "object",
      "properties": {
        "default_namespace": {
          "title": "Overrides the default namespace for the metrics emitted by the source.",
          "description": "By default, `eventstoredb` is used.",
          "type": [
            "string",
            "null"
          ]
        },
        "endpoint": {
          "description": "Endpoint to scrape stats from.",
          "default": "https://localhost:2113/stats",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes, in seconds.",
          "default": 15
        }
      }
    },
    "vector::sources::exec::ExecConfig": {
      "description": "Configuration for the `exec` source.",
      "type": "object",
      "required": [
        "command",
        "mode"
      ],
      "properties": {
        "clear_environment": {
          "description": "Whether or not to clear the environment before setting custom environment variables.",
          "default": false,
          "type": "boolean"
        },
        "command": {
          "description": "The command to run, plus any arguments required.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "environment": {
          "description": "Custom environment variables to set or update when running the command.\nIf a variable name already exists in the environment, its value is replaced.",
          "default": null,
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": {
            "type": "string"
          }
        },
        "framing": {
          "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
        },
        "include_stderr": {
          "description": "Whether or not the output from stderr should be included when generating events.",
          "default": true,
          "type": "boolean"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "maximum_buffer_size_bytes": {
          "description": "The maximum buffer size allowed before a log event is generated.",
          "default": 1000000,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "mode": {
          "description": "Mode of operation for running the command.",
          "oneOf": [
            {
              "description": "The command is run on a schedule.",
              "const": "scheduled"
            },
            {
              "description": "The command is run until it exits, potentially being restarted.",
              "const": "streaming"
            }
          ]
        },
        "scheduled": {
          "description": "Configuration options for scheduled commands.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configuration options for scheduled commands.",
              "type": "object",
              "properties": {
                "exec_interval_secs": {
                  "title": "The interval, in seconds, between scheduled command runs.",
                  "description": "If the command takes longer than `exec_interval_secs` to run, it is killed.",
                  "default": 60,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        },
        "streaming": {
          "description": "Configuration options for streaming commands.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configuration options for streaming commands.",
              "type": "object",
              "properties": {
                "respawn_interval_secs": {
                  "description": "The amount of time, in seconds, before rerunning a streaming command that exited.",
                  "default": 5,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "respawn_on_exit": {
                  "description": "Whether or not the command should be rerun if the command exits.",
                  "default": true,
                  "type": "boolean"
                }
              }
            }
          ]
        },
        "working_directory": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "description": "The directory in which to run the command."
        }
      }
    },
    "vector::sources::file::FileConfig": {
      "description": "Configuration for the `file` source.",
      "type": "object",
      "required": [
        "include"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "data_dir": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The directory used to persist file checkpoint positions.",
          "description": "By default, the [global `data_dir` option][global_data_dir] is used.\nMake sure the running user has write permissions to this directory.\n\nIf this directory is specified, then Vector will attempt to create it.\n\n[global_data_dir]: <https://vector.dev/docs/reference/configuration/global-options/#data_dir>",
          "default": null
        },
        "encoding": {
          "description": "Character set encoding.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Character set encoding.",
              "type": "object",
              "required": [
                "charset"
              ],
              "properties": {
                "charset": {
                  "title": "Encoding of the source messages.",
                  "description": "Takes one of the encoding [label strings](https://encoding.spec.whatwg.org/#concept-encoding-get) defined as\npart of the [Encoding Standard](https://encoding.spec.whatwg.org/).\n\nWhen set, the messages are transcoded from the specified encoding to UTF-8, which is the encoding that is\nassumed internally for string-like data. Enable this transcoding operation if you need your data to\nbe in UTF-8 for further processing. At the time of transcoding, any malformed sequences (that can't be mapped to\nUTF-8) is replaced with the Unicode [REPLACEMENT\nCHARACTER](https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character) and warnings are\nlogged.",
                  "type": "string"
                }
              }
            }
          ]
        },
        "exclude": {
          "title": "Array of file patterns to exclude. [Globbing](https://vector.dev/docs/reference/configuration/sources/file/#globbing) is supported.",
          "description": "Takes precedence over the `include` option. Note: The `exclude` patterns are applied _after_ the attempt to glob everything\nin `include`. This means that all files are first matched by `include` and then filtered by the `exclude`\npatterns. This can be impactful if `include` contains directories with contents that are not accessible.",
          "default": [],
          "type": "array",
          "items": {
            "$ref": "#/$defs/stdlib::PathBuf"
          }
        },
        "file_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "title": "Overrides the name of the log field used to add the file path to each event.",
          "description": "The value is the full path to the file where the event was read message.\n\nSet to `\"\"` to suppress this key.",
          "default": "file"
        },
        "fingerprint": {
          "title": "Configuration for how files should be identified.",
          "description": "This is important for `checkpointing` when file rotation is used.",
          "default": {
            "strategy": "checksum",
            "bytes": null,
            "ignored_header_bytes": 0,
            "lines": 1
          },
          "oneOf": [
            {
              "description": "Read lines from the beginning of the file and compute a checksum over them.",
              "type": "object",
              "required": [
                "strategy"
              ],
              "properties": {
                "bytes": {
                  "description": "Maximum number of bytes to use, from the lines that are read, for generating the checksum.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "ignored_header_bytes": {
                  "title": "The number of bytes to skip ahead (or ignore) when reading the data used for generating the checksum.\nIf the file is compressed, the number of bytes refer to the header in the uncompressed content. Only\ngzip is supported at this time.",
                  "description": "This can be helpful if all files share a common header that should be skipped.",
                  "default": 0,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "lines": {
                  "title": "The number of lines to read for generating the checksum.",
                  "description": "The number of lines are determined from the uncompressed content if the file is compressed. Only\ngzip is supported at this time.\n\nIf the file has less than this amount of lines, it won’t be read at all.",
                  "default": 1,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "strategy": {
                  "description": "Read lines from the beginning of the file and compute a checksum over them.",
                  "const": "checksum"
                }
              }
            },
            {
              "title": "Use the [device and inode][inode] as the identifier.",
              "description": "[inode]: <https://en.wikipedia.org/wiki/Inode>",
              "type": "object",
              "required": [
                "strategy"
              ],
              "properties": {
                "strategy": {
                  "title": "Use the [device and inode][inode] as the identifier.",
                  "description": "[inode]: <https://en.wikipedia.org/wiki/Inode>",
                  "const": "device_and_inode"
                }
              }
            }
          ]
        },
        "glob_minimum_cooldown_ms": {
          "$ref": "#/$defs/serde_with::DurationMilliSeconds",
          "title": "The delay between file discovery calls.",
          "description": "This controls the interval at which files are searched. A higher value results in greater\nchances of some short-lived files being missed between searches, but a lower value increases\nthe performance impact of file discovery.",
          "default": 1000
        },
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Overrides the name of the log field used to add the current hostname to each event.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
        },
        "ignore_checkpoints": {
          "title": "Whether or not to ignore existing checkpoints when determining where to start reading a file.",
          "description": "Checkpoints are still written normally.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "ignore_not_found": {
          "title": "Ignore missing files when fingerprinting.",
          "description": "This may be useful when used with source directories containing dangling symlinks.",
          "default": false,
          "type": "boolean"
        },
        "ignore_older_secs": {
          "description": "Ignore files with a data modification date older than the specified number of seconds.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "include": {
          "description": "Array of file patterns to include. [Globbing](https://vector.dev/docs/reference/configuration/sources/file/#globbing) is supported.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/stdlib::PathBuf"
          }
        },
        "internal_metrics": {
          "$ref": "#/$defs/vector::internal_events::file::FileInternalMetricsConfig",
          "description": "Configuration of internal metrics for file-based components.",
          "default": {
            "include_file_tag": false
          }
        },
        "line_delimiter": {
          "description": "String sequence used to separate one file line from another.",
          "default": "\n",
          "type": "string"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "max_line_bytes": {
          "title": "The maximum size of a line before it is discarded.",
          "description": "This protects against malformed lines or tailing incorrect files.",
          "default": 102400,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_read_bytes": {
          "title": "Max amount of bytes to read from a single file before switching over to the next file.\n**Note:** This does not apply when `oldest_first` is `true`.",
          "description": "This allows distributing the reads more or less evenly across\nthe files.",
          "default": 2048,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "message_start_indicator": {
          "description": "String value used to identify the start of a multi-line message.",
          "default": null,
          "deprecated": true,
          "type": [
            "string",
            "null"
          ]
        },
        "multi_line_timeout": {
          "description": "How long to wait for more data when aggregating a multi-line message, in milliseconds.",
          "default": 1000,
          "deprecated": true,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "multiline": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::multiline_config::MultilineConfig%3E",
          "title": "Multiline aggregation configuration.",
          "description": "If not specified, multiline aggregation is disabled.",
          "default": null
        },
        "offset_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Enables adding the file offset to each event and sets the name of the log field used.",
          "description": "The value is the byte offset of the start of the line within the file.\n\nOff by default, the offset is only added to the event if this is set.",
          "default": null
        },
        "oldest_first": {
          "description": "Instead of balancing read capacity fairly across all watched files, prioritize draining the oldest files before moving on to read data from more recent files.",
          "default": false,
          "type": "boolean"
        },
        "read_from": {
          "$ref": "#/$defs/file_source::ReadFromConfig",
          "description": "File position to use when reading a new file.",
          "default": "beginning"
        },
        "remove_after_secs": {
          "title": "After reaching EOF, the number of seconds to wait before removing the file, unless new data is written.",
          "description": "If not specified, files are not removed.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "rotate_wait_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "How long to keep an open handle to a rotated log file.\nThe default value represents \"no limit\"",
          "default": 9223372036854775807
        },
        "start_at_beginning": {
          "description": "Whether or not to start reading from the beginning of a new file.",
          "default": null,
          "deprecated": true,
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "vector::sources::file_descriptors::file_descriptor::FileDescriptorSourceConfig": {
      "description": "Configuration for the `file_descriptor` source.",
      "type": "object",
      "required": [
        "fd"
      ],
      "properties": {
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "fd": {
          "description": "The file descriptor number to read from.",
          "type": "integer",
          "maximum": 4294967295.0,
          "minimum": 0.0
        },
        "framing": {
          "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
        },
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Overrides the name of the log field used to add the current hostname to each event.",
          "description": "By default, the [global `host_key` option](https://vector.dev/docs/reference/configuration//global-options#log_schema.host_key) is used."
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "max_length": {
          "title": "The maximum buffer size, in bytes, of incoming messages.",
          "description": "Messages larger than this are truncated.",
          "default": 102400,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::sources::file_descriptors::stdin::StdinConfig": {
      "description": "Configuration for the `stdin` source.",
      "default": {
        "max_length": 102400,
        "host_key": null,
        "framing": null,
        "decoding": {
          "codec": "bytes"
        },
        "log_namespace": null
      },
      "type": "object",
      "properties": {
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "framing": {
          "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
        },
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Overrides the name of the log field used to add the current hostname to each event.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "max_length": {
          "title": "The maximum buffer size, in bytes, of incoming messages.",
          "description": "Messages larger than this are truncated.",
          "default": 102400,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        }
      }
    },
    "vector::sources::fluent::FluentConfig": {
      "description": "Configuration for the `fluent` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
          "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
          "description": "If a socket address is used, it _must_ include a port."
        },
        "connection_limit": {
          "description": "The maximum number of TCP connections that are allowed at any given time.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 4294967295.0,
          "minimum": 0.0
        },
        "keepalive": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "permit_origin": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
        },
        "receive_buffer_bytes": {
          "title": "The size of the receive buffer used for each connection.",
          "description": "This generally should not need to be changed.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E"
        }
      }
    },
    "vector::sources::gcp_pubsub::PubsubConfig": {
      "description": "Configuration for the `gcp_pubsub` source.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "project",
            "subscription"
          ],
          "properties": {
            "ack_deadline_seconds": {
              "title": "The acknowledgement deadline, in seconds, to use for this stream.",
              "description": "Messages that are not acknowledged when this deadline expires may be retransmitted.",
              "deprecated": true,
              "type": [
                "integer",
                "null"
              ],
              "maximum": 65535.0,
              "minimum": 0.0
            },
            "ack_deadline_secs": {
              "$ref": "#/$defs/serde_with::DurationSeconds",
              "title": "The acknowledgement deadline, in seconds, to use for this stream.",
              "description": "Messages that are not acknowledged when this deadline expires may be retransmitted.",
              "default": 600
            },
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled by this source.",
              "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "endpoint": {
              "description": "The endpoint from which to pull data.",
              "default": "https://pubsub.googleapis.com",
              "type": "string"
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "bytes"
              }
            },
            "full_response_size": {
              "title": "The number of messages in a response to mark a stream as\n\"busy\". This is used to determine if more streams should be\nstarted.",
              "description": "The GCP Pub/Sub servers send responses with 100 or more messages when\nthe subscription is busy.",
              "default": 100,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "keepalive_secs": {
              "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
              "description": "The amount of time, in seconds, with no received activity\nbefore sending a keepalive request. If this is set larger than\n`60`, you may see periodic errors sent from the server.",
              "default": 60.0
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "max_concurrency": {
              "description": "The maximum number of concurrent stream connections to open at once.",
              "default": 10,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "poll_time_seconds": {
              "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
              "description": "How often to poll the currently active streams to see if they\nare all busy and so open a new stream.",
              "default": 2.0
            },
            "project": {
              "description": "The project name from which to pull logs.",
              "type": "string"
            },
            "retry_delay_seconds": {
              "description": "The amount of time, in seconds, to wait between retry attempts after an error.",
              "deprecated": true,
              "type": [
                "number",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": -9007199254740990.0
            },
            "retry_delay_secs": {
              "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
              "description": "The amount of time, in seconds, to wait between retry attempts after an error.",
              "default": 1.0
            },
            "subscription": {
              "description": "The subscription within the project which is configured to receive logs.",
              "type": "string"
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
            }
          }
        },
        {
          "$ref": "#/$defs/vector::gcp::GcpAuthConfig",
          "description": "Configuration of the authentication strategy for interacting with GCP services."
        }
      ]
    },
    "vector::sources::heroku_logs::LogplexConfig": {
      "description": "Configuration for `heroku_logs` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "description": "The socket address to listen for connections on."
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::http::auth::HttpSourceAuthConfig%3E"
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "query_parameters": {
          "title": "A list of URL query parameters to include in the log event.",
          "description": "Accepts the wildcard (`*`) character for query parameters matching a specified pattern.\n\nSpecifying \"*\" results in all query parameters included in the log event.\n\nThese override any values included in the body with conflicting names.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::host_metrics::FilterList": {
      "description": "Filtering configuration.",
      "type": "object",
      "properties": {
        "excludes": {
          "title": "Any patterns which should be excluded.",
          "description": "The patterns are matched using globbing.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "title": "A compiled Unix shell-style pattern.",
            "description": "- `?` matches any single character.\n- `*` matches any (possibly empty) sequence of characters.\n- `**` matches the current directory and arbitrary subdirectories. This sequence must form a single path component,\n  so both `**a` and `b**` are invalid and will result in an error. A sequence of more than two consecutive `*`\n  characters is also invalid.\n- `[...]` matches any character inside the brackets. Character sequences can also specify ranges of characters, as\n  ordered by Unicode, so e.g. `[0-9]` specifies any character between 0 and 9 inclusive. An unclosed bracket is\n  invalid.\n- `[!...]` is the negation of `[...]`, i.e. it matches any characters not in the brackets.\n\nThe metacharacters `?`, `*`, `[`, `]` can be matched by using brackets (e.g. `[?]`). When a `]` occurs immediately\nfollowing `[` or `[!` then it is interpreted as being part of, rather then ending, the character set, so `]` and NOT\n`]` can be matched by `[]]` and `[!]]` respectively. The `-` character can be specified inside a character sequence\npattern by placing it at the start or the end, e.g. `[abc-]`.",
            "type": "string"
          }
        },
        "includes": {
          "title": "Any patterns which should be included.",
          "description": "The patterns are matched using globbing.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "title": "A compiled Unix shell-style pattern.",
            "description": "- `?` matches any single character.\n- `*` matches any (possibly empty) sequence of characters.\n- `**` matches the current directory and arbitrary subdirectories. This sequence must form a single path component,\n  so both `**a` and `b**` are invalid and will result in an error. A sequence of more than two consecutive `*`\n  characters is also invalid.\n- `[...]` matches any character inside the brackets. Character sequences can also specify ranges of characters, as\n  ordered by Unicode, so e.g. `[0-9]` specifies any character between 0 and 9 inclusive. An unclosed bracket is\n  invalid.\n- `[!...]` is the negation of `[...]`, i.e. it matches any characters not in the brackets.\n\nThe metacharacters `?`, `*`, `[`, `]` can be matched by using brackets (e.g. `[?]`). When a `]` occurs immediately\nfollowing `[` or `[!` then it is interpreted as being part of, rather then ending, the character set, so `]` and NOT\n`]` can be matched by `[]]` and `[!]]` respectively. The `-` character can be specified inside a character sequence\npattern by placing it at the start or the end, e.g. `[abc-]`.",
            "type": "string"
          }
        }
      }
    },
    "vector::sources::host_metrics::HostMetricsConfig": {
      "description": "Configuration for the `host_metrics` source.",
      "type": "object",
      "properties": {
        "cgroups": {
          "title": "Options for the cgroups (controller groups) metrics collector.",
          "description": "This collector is only available on Linux systems, and only supports either version 2 or hybrid cgroups.",
          "default": {
            "levels": 100,
            "base": null,
            "groups": {
              "includes": null,
              "excludes": null
            }
          },
          "oneOf": [
            {
              "type": "null"
            },
            {
              "title": "Options for the cgroups (controller groups) metrics collector.",
              "description": "This collector is only available on Linux systems, and only supports either version 2 or hybrid cgroups.",
              "default": {
                "levels": 100,
                "base": null,
                "groups": {
                  "includes": null,
                  "excludes": null
                }
              },
              "type": "object",
              "properties": {
                "base": {
                  "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
                  "description": "The base cgroup name to provide metrics for."
                },
                "base_dir": {
                  "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
                  "description": "Base cgroup directory, for testing use only"
                },
                "groups": {
                  "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
                  "description": "Lists of cgroup name patterns to include or exclude in gathering\nusage metrics.",
                  "default": {
                    "includes": [
                      "*"
                    ],
                    "excludes": null
                  }
                },
                "levels": {
                  "title": "The number of levels of the cgroups hierarchy for which to report metrics.",
                  "description": "A value of `1` means the root or named cgroup.",
                  "default": 100,
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        },
        "collectors": {
          "title": "The list of host metric collector services to use.",
          "description": "Defaults to all collectors.",
          "default": [
            "cpu",
            "disk",
            "filesystem",
            "load",
            "host",
            "memory",
            "network",
            "process",
            "cgroups"
          ],
          "type": [
            "array",
            "null"
          ],
          "items": {
            "description": "Collector types.",
            "oneOf": [
              {
                "title": "Metrics related to Linux control groups.",
                "description": "Only available on Linux.",
                "const": "cgroups"
              },
              {
                "description": "Metrics related to CPU utilization.",
                "const": "cpu"
              },
              {
                "description": "Metrics related to Process utilization.",
                "const": "process"
              },
              {
                "description": "Metrics related to disk I/O utilization.",
                "const": "disk"
              },
              {
                "description": "Metrics related to filesystem space utilization.",
                "const": "filesystem"
              },
              {
                "description": "Metrics related to the system load average.",
                "const": "load"
              },
              {
                "description": "Metrics related to the host.",
                "const": "host"
              },
              {
                "description": "Metrics related to memory utilization.",
                "const": "memory"
              },
              {
                "description": "Metrics related to network utilization.",
                "const": "network"
              }
            ]
          }
        },
        "disk": {
          "description": "Options for the disk metrics collector.",
          "default": {
            "devices": {
              "includes": null,
              "excludes": null
            }
          },
          "type": "object",
          "properties": {
            "devices": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of device name patterns to include or exclude in gathering\nI/O utilization metrics.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            }
          }
        },
        "filesystem": {
          "description": "Options for the filesystem metrics collector.",
          "default": {
            "devices": {
              "includes": null,
              "excludes": null
            },
            "filesystems": {
              "includes": null,
              "excludes": null
            },
            "mountpoints": {
              "includes": null,
              "excludes": null
            }
          },
          "type": "object",
          "properties": {
            "devices": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of device name patterns to include or exclude in gathering\nusage metrics.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            },
            "filesystems": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of filesystem name patterns to include or exclude in gathering\nusage metrics.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            },
            "mountpoints": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of mount point path patterns to include or exclude in gathering\nusage metrics.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            }
          }
        },
        "namespace": {
          "description": "Overrides the default namespace for the metrics emitted by the source.",
          "default": "host",
          "type": [
            "string",
            "null"
          ]
        },
        "network": {
          "description": "Options for the network metrics collector.",
          "default": {
            "devices": {
              "includes": null,
              "excludes": null
            }
          },
          "type": "object",
          "properties": {
            "devices": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of device name patterns to include or exclude in gathering\nnetwork utilization metrics.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            }
          }
        },
        "process": {
          "description": "Options for the process metrics collector.",
          "default": {
            "processes": {
              "includes": null,
              "excludes": null
            }
          },
          "type": "object",
          "properties": {
            "processes": {
              "$ref": "#/$defs/vector::sources::host_metrics::FilterList",
              "description": "Lists of process name patterns to include or exclude.",
              "default": {
                "includes": [
                  "*"
                ],
                "excludes": null
              }
            }
          }
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between metric gathering, in seconds.",
          "default": 15
        }
      }
    },
    "vector::sources::http_client::client::HttpClientConfig": {
      "description": "Configuration for the `http_client` source.",
      "type": "object",
      "required": [
        "endpoint"
      ],
      "properties": {
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E",
          "description": "HTTP Authentication."
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Decoder to use on the HTTP responses.",
          "default": {
            "codec": "bytes"
          }
        },
        "endpoint": {
          "title": "The HTTP endpoint to collect events from.",
          "description": "The full path must be specified.",
          "type": "string"
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "description": "Framing to use in the decoding.",
          "default": {
            "method": "bytes"
          }
        },
        "headers": {
          "title": "Headers to apply to the HTTP requests.",
          "description": "One or more values for the same header can be provided.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "method": {
          "$ref": "#/$defs/vector::sources::util::http::method::HttpMethod",
          "description": "Specifies the method of the HTTP request.",
          "default": "GET"
        },
        "query": {
          "title": "Custom parameters for the HTTP request query string.",
          "description": "One or more values for the same parameter key can be provided.\n\nThe parameters provided in this option are appended to any parameters\nmanually provided in the `endpoint` option.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes. Requests are run concurrently so if a scrape takes longer\nthan the interval a new scrape will be started. This can take extra resources, set the timeout\nto a value lower than the scrape interval to prevent this from happening.",
          "default": 15
        },
        "scrape_timeout_secs": {
          "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
          "description": "The timeout for each scrape request.",
          "default": 5.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E",
          "description": "TLS configuration."
        }
      }
    },
    "vector::sources::http_server::HttpConfig": {
      "$ref": "#/$defs/vector::sources::http_server::SimpleHttpConfig",
      "description": "Configuration for the `http` source."
    },
    "vector::sources::http_server::SimpleHttpConfig": {
      "description": "Configuration for the `http_server` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to listen for connections on.",
          "description": "It _must_ include a port."
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::http::auth::HttpSourceAuthConfig%3E"
        },
        "decoding": {
          "description": "Configures how events are decoded from raw bytes.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configures how events are decoded from raw bytes.",
              "oneOf": [
                {
                  "description": "Uses the raw bytes as-is.",
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "description": "Uses the raw bytes as-is.",
                      "const": "bytes"
                    }
                  }
                },
                {
                  "title": "Decodes the raw bytes as [JSON][json].",
                  "description": "[json]: <https://www.json.org/>",
                  "allOf": [
                    {
                      "description": "Config used to build a `JsonDeserializer`.",
                      "type": "object",
                      "properties": {
                        "json": {
                          "description": "JSON-specific decoding options.",
                          "default": {
                            "lossy": true
                          },
                          "type": "object",
                          "properties": {
                            "lossy": {
                              "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                              "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                              "default": true,
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as [JSON][json].",
                          "description": "[json]: <https://www.json.org/>",
                          "const": "json"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as [protobuf][protobuf].",
                  "description": "[protobuf]: <https://protobuf.dev/>",
                  "allOf": [
                    {
                      "description": "Config used to build a `ProtobufDeserializer`.",
                      "type": "object",
                      "properties": {
                        "protobuf": {
                          "description": "Protobuf-specific decoding options.",
                          "default": {
                            "desc_file": "",
                            "message_type": ""
                          },
                          "type": "object",
                          "required": [
                            "desc_file",
                            "message_type"
                          ],
                          "properties": {
                            "desc_file": {
                              "$ref": "#/$defs/stdlib::PathBuf",
                              "description": "Path to desc file"
                            },
                            "message_type": {
                              "description": "message type. e.g package.message",
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as [protobuf][protobuf].",
                          "description": "[protobuf]: <https://protobuf.dev/>",
                          "const": "protobuf"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as a Syslog message.",
                  "description": "Decodes either as the [RFC 3164][rfc3164]-style format (\"old\" style) or the\n[RFC 5424][rfc5424]-style format (\"new\" style, includes structured data).\n\n[rfc3164]: <https://www.ietf.org/rfc/rfc3164.txt>\n[rfc5424]: <https://www.ietf.org/rfc/rfc5424.txt>",
                  "allOf": [
                    {
                      "description": "Config used to build a `SyslogDeserializer`.",
                      "type": "object",
                      "properties": {
                        "syslog": {
                          "description": "Syslog-specific decoding options.",
                          "default": {
                            "lossy": true
                          },
                          "type": "object",
                          "properties": {
                            "lossy": {
                              "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                              "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                              "default": true,
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as a Syslog message.",
                          "description": "Decodes either as the [RFC 3164][rfc3164]-style format (\"old\" style) or the\n[RFC 5424][rfc5424]-style format (\"new\" style, includes structured data).\n\n[rfc3164]: <https://www.ietf.org/rfc/rfc3164.txt>\n[rfc5424]: <https://www.ietf.org/rfc/rfc5424.txt>",
                          "const": "syslog"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as [native Protocol Buffers format][vector_native_protobuf].",
                  "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                  "type": "object",
                  "required": [
                    "codec"
                  ],
                  "properties": {
                    "codec": {
                      "title": "Decodes the raw bytes as [native Protocol Buffers format][vector_native_protobuf].",
                      "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_protobuf]: <https://github.com/vectordotdev/vector/blob/master/lib/vector-core/proto/event.proto>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                      "const": "native"
                    }
                  }
                },
                {
                  "title": "Decodes the raw bytes as [native JSON format][vector_native_json].",
                  "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                  "allOf": [
                    {
                      "description": "Config used to build a `NativeJsonDeserializer`.",
                      "type": "object",
                      "properties": {
                        "native_json": {
                          "description": "Vector's native JSON-specific decoding options.",
                          "default": {
                            "lossy": true
                          },
                          "type": "object",
                          "properties": {
                            "lossy": {
                              "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                              "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                              "default": true,
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as [native JSON format][vector_native_json].",
                          "description": "This codec is **[experimental][experimental]**.\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>\n[experimental]: <https://vector.dev/highlights/2022-03-31-native-event-codecs>",
                          "const": "native_json"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as a [GELF][gelf] message.",
                  "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's decoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
                  "allOf": [
                    {
                      "description": "Config used to build a `GelfDeserializer`.",
                      "type": "object",
                      "properties": {
                        "gelf": {
                          "description": "GELF-specific decoding options.",
                          "default": {
                            "lossy": true
                          },
                          "type": "object",
                          "properties": {
                            "lossy": {
                              "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                              "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                              "default": true,
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as a [GELF][gelf] message.",
                          "description": "This codec is experimental for the following reason:\n\nThe GELF specification is more strict than the actual Graylog receiver.\nVector's decoder currently adheres more strictly to the GELF spec, with\nthe exception that some characters such as `@`  are allowed in field names.\n\nOther GELF codecs such as Loki's, use a [Go SDK][implementation] that is maintained\nby Graylog, and is much more relaxed than the GELF spec.\n\nGoing forward, Vector will use that [Go SDK][implementation] as the reference implementation, which means\nthe codec may continue to relax the enforcement of specification.\n\n[gelf]: <https://docs.graylog.org/docs/gelf>\n[implementation]: <https://github.com/Graylog2/go-gelf/blob/v2/gelf/reader.go>",
                          "const": "gelf"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as an [Influxdb Line Protocol][influxdb] message.",
                  "description": "[influxdb]: <https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol>",
                  "allOf": [
                    {
                      "description": "Config used to build a `InfluxdbDeserializer`.\n- [InfluxDB Line Protocol](https://docs.influxdata.com/influxdb/v1/write_protocols/line_protocol_tutorial/):",
                      "type": "object",
                      "properties": {
                        "influxdb": {
                          "description": "Influxdb-specific decoding options.",
                          "default": {
                            "lossy": true
                          },
                          "type": "object",
                          "properties": {
                            "lossy": {
                              "title": "Determines whether or not to replace invalid UTF-8 sequences instead of failing.",
                              "description": "When true, invalid UTF-8 sequences are replaced with the [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n\n[U+FFFD]: <https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character>",
                              "default": true,
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as an [Influxdb Line Protocol][influxdb] message.",
                          "description": "[influxdb]: <https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol>",
                          "const": "influxdb"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "Decodes the raw bytes as as an [Apache Avro][apache_avro] message.",
                  "description": "[apache_avro]: <https://avro.apache.org/>",
                  "type": "object",
                  "required": [
                    "avro",
                    "codec"
                  ],
                  "properties": {
                    "avro": {
                      "description": "Apache Avro-specific encoder options.",
                      "type": "object",
                      "required": [
                        "schema",
                        "strip_schema_id_prefix"
                      ],
                      "properties": {
                        "schema": {
                          "description": "The Avro schema definition.\nPlease note that the following [`apache_avro::types::Value`] variants are currently *not* supported:\n* `Date`\n* `Decimal`\n* `Duration`\n* `Fixed`\n* `TimeMillis`",
                          "type": "string"
                        },
                        "strip_schema_id_prefix": {
                          "description": "For Avro datum encoded in Kafka messages, the bytes are prefixed with the schema ID.  Set this to true to strip the schema ID prefix.\nAccording to [Confluent Kafka's document](https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#wire-format).",
                          "type": "boolean"
                        }
                      }
                    },
                    "codec": {
                      "title": "Decodes the raw bytes as as an [Apache Avro][apache_avro] message.",
                      "description": "[apache_avro]: <https://avro.apache.org/>",
                      "const": "avro"
                    }
                  }
                },
                {
                  "title": "Decodes the raw bytes as a string and passes them as input to a [VRL][vrl] program.",
                  "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
                  "allOf": [
                    {
                      "description": "Config used to build a `VrlDeserializer`.",
                      "type": "object",
                      "required": [
                        "vrl"
                      ],
                      "properties": {
                        "vrl": {
                          "description": "VRL-specific decoding options.",
                          "type": "object",
                          "required": [
                            "source"
                          ],
                          "properties": {
                            "source": {
                              "title": "The [Vector Remap Language][vrl] (VRL) program to execute for each event.\nNote that the final contents of the `.` target will be used as the decoding result.\nCompilation error or use of 'abort' in a program will result in a decoding error.",
                              "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
                              "type": "string"
                            },
                            "timezone": {
                              "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
                              "title": "The name of the timezone to apply to timestamp conversions that do not contain an explicit\ntime zone. The time zone name may be any name in the [TZ database][tz_database], or `local`\nto indicate system local time.",
                              "description": "If not set, `local` will be used.\n\n[tz_database]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
                              "default": null
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "codec"
                      ],
                      "properties": {
                        "codec": {
                          "title": "Decodes the raw bytes as a string and passes them as input to a [VRL][vrl] program.",
                          "description": "[vrl]: <https://vector.dev/docs/reference/vrl>",
                          "const": "vrl"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        "encoding": {
          "title": "The expected encoding of received data.",
          "description": "For `json` and `ndjson` encodings, the fields of the JSON objects are output as separate fields.",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Content encoding.",
              "oneOf": [
                {
                  "description": "Plaintext.",
                  "const": "text"
                },
                {
                  "description": "Newline-delimited JSON.",
                  "const": "ndjson"
                },
                {
                  "description": "JSON.",
                  "const": "json"
                },
                {
                  "description": "Binary.",
                  "const": "binary"
                }
              ]
            }
          ]
        },
        "framing": {
          "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
        },
        "headers": {
          "title": "A list of HTTP headers to include in the log event.",
          "description": "Accepts the wildcard (`*`) character for headers matching a specified pattern.\n\nSpecifying \"*\" results in all headers included in the log event.\n\nThese headers are not included in the JSON payload if a field with a conflicting name exists.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "host_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "description": "If set, the name of the log field used to add the remote IP to each event",
          "default": ""
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "method": {
          "$ref": "#/$defs/vector::sources::util::http::method::HttpMethod",
          "description": "Specifies the action of the HTTP request.",
          "default": "POST"
        },
        "path": {
          "description": "The URL path on which log event POST requests are sent.",
          "default": "/",
          "type": "string"
        },
        "path_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "description": "The event key in which the requested URL path used to send the request is stored.",
          "default": "path"
        },
        "query_parameters": {
          "title": "A list of URL query parameters to include in the log event.",
          "description": "Accepts the wildcard (`*`) character for query parameters matching a specified pattern.\n\nSpecifying \"*\" results in all query parameters included in the log event.\n\nThese override any values included in the body with conflicting names.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "response_code": {
          "description": "Specifies the HTTP response status code that will be returned on successful requests.",
          "default": 200,
          "type": "integer",
          "maximum": 65535.0,
          "minimum": 0.0
        },
        "strict_path": {
          "title": "Whether or not to treat the configured `path` as an absolute path.",
          "description": "If set to `true`, only requests using the exact URL path specified in `path` are accepted. Otherwise,\nrequests sent to a URL path that starts with the value of `path` are accepted.\n\nWith `strict_path` set to `false` and `path` set to `\"\"`, the configured HTTP source accepts requests from\nany URL path.",
          "default": true,
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::internal_logs::InternalLogsConfig": {
      "description": "Configuration for the `internal_logs` source.",
      "type": "object",
      "properties": {
        "host_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Overrides the name of the log field used to add the current hostname to each event.",
          "description": "By default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "pid_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "title": "Overrides the name of the log field used to add the current process ID to each event.",
          "description": "By default, `\"pid\"` is used.\n\nSet to `\"\"` to suppress this key.",
          "default": "pid"
        }
      }
    },
    "vector::sources::internal_metrics::InternalMetricsConfig": {
      "description": "Configuration for the `internal_metrics` source.",
      "default": {
        "scrape_interval_secs": 1.0,
        "tags": {
          "host_key": null,
          "pid_key": null
        },
        "namespace": "vector"
      },
      "type": "object",
      "properties": {
        "namespace": {
          "description": "Overrides the default namespace for the metrics emitted by the source.",
          "default": "vector",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
          "description": "The interval between metric gathering, in seconds.",
          "default": 1.0
        },
        "tags": {
          "description": "Tag configuration for the `internal_metrics` source.",
          "default": {
            "host_key": null,
            "pid_key": null
          },
          "type": "object",
          "properties": {
            "host_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Overrides the name of the tag used to add the peer host to each metric.",
              "description": "The value is the peer host's address, including the port. For example, `1.2.3.4:9000`.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
            },
            "pid_key": {
              "title": "Sets the name of the tag to use to add the current process ID to each metric.",
              "description": "By default, this is not set and the tag is not automatically added.",
              "type": [
                "string",
                "null"
              ]
            }
          }
        }
      }
    },
    "vector::sources::journald::JournaldConfig": {
      "description": "Configuration for the `journald` source.",
      "type": "object",
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "batch_size": {
          "title": "The systemd journal is read in batches, and a checkpoint is set at the end of each batch.",
          "description": "This option limits the size of the batch.",
          "default": 16,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "current_boot_only": {
          "description": "Only include entries that occurred after the current boot of the system.",
          "default": true,
          "type": "boolean"
        },
        "data_dir": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The directory used to persist file checkpoint positions.",
          "description": "By default, the [global `data_dir` option][global_data_dir] is used.\nMake sure the running user has write permissions to this directory.\n\nIf this directory is specified, then Vector will attempt to create it.\n\n[global_data_dir]: <https://vector.dev/docs/reference/configuration/global-options/#data_dir>",
          "default": null
        },
        "emit_cursor": {
          "title": "Whether to emit the [__CURSOR field][cursor]. See also [sd_journal_get_cursor][get_cursor].",
          "description": "[cursor]: <https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html#Address%20Fields>\n[get_cursor]: <https://www.freedesktop.org/software/systemd/man/latest/sd_journal_get_cursor.html>",
          "default": false,
          "type": "boolean"
        },
        "exclude_matches": {
          "title": "A list of sets of field/value pairs that, if any are present in a journal entry,\nexcludes the entry from this source.",
          "description": "If `exclude_units` is specified, it is merged into this list.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        },
        "exclude_units": {
          "title": "A list of unit names to exclude from monitoring.",
          "description": "Unit names lacking a `.` have `.service` appended to make them a valid service unit\nname.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "extra_args": {
          "title": "A list of extra command line arguments to pass to `journalctl`.",
          "description": "If specified, it is merged to the command line arguments as-is.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "include_matches": {
          "title": "A list of sets of field/value pairs to monitor.",
          "description": "If empty or not present, all journal fields are accepted.\n\nIf `include_units` is specified, it is merged into this list.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        },
        "include_units": {
          "title": "A list of unit names to monitor.",
          "description": "If empty or not present, all units are accepted.\n\nUnit names lacking a `.` have `.service` appended to make them a valid service unit name.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "journal_directory": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The full path of the journal directory.",
          "description": "If not set, `journalctl` uses the default system journal path.",
          "default": null
        },
        "journal_namespace": {
          "title": "The [journal namespace][journal-namespace].",
          "description": "This value is passed to `journalctl` through the [`--namespace` option][journalctl-namespace-option].\nIf not set, `journalctl` uses the default namespace.\n\n[journal-namespace]: <https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html#Journal%20Namespaces>\n[journalctl-namespace-option]: <https://www.freedesktop.org/software/systemd/man/journalctl.html#--namespace=NAMESPACE>",
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "journalctl_path": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The full path of the `journalctl` executable.",
          "description": "If not set, a search is done for the `journalctl` path.",
          "default": null
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "remap_priority": {
          "title": "Enables remapping the `PRIORITY` field from an integer to string value.",
          "description": "Has no effect unless the value of the field is already an integer.",
          "default": false,
          "deprecated": true,
          "type": "boolean"
        },
        "since_now": {
          "description": "Only include entries that appended to the journal after the entries have been read.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "vector::sources::kafka::KafkaSourceConfig": {
      "description": "Configuration for the `kafka` source.",
      "allOf": [
        {
          "type": "object",
          "required": [
            "bootstrap_servers",
            "group_id",
            "topics"
          ],
          "properties": {
            "acknowledgements": {
              "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
              "title": "Controls how acknowledgements are handled by this source.",
              "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
              "default": {
                "enabled": null
              }
            },
            "auto_offset_reset": {
              "title": "If offsets for consumer group do not exist, set them using this strategy.",
              "description": "See the [librdkafka documentation](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md) for the `auto.offset.reset` option for further clarification.",
              "default": "largest",
              "type": "string"
            },
            "bootstrap_servers": {
              "title": "A comma-separated list of Kafka bootstrap servers.",
              "description": "These are the servers in a Kafka cluster that a client should use to bootstrap its connection to the cluster,\nallowing discovery of all the other hosts in the cluster.\n\nMust be in the form of `host:port`, and comma-separated.",
              "type": "string"
            },
            "commit_interval_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "The frequency that the consumer offsets are committed (written) to offset storage.",
              "default": 5000
            },
            "decoding": {
              "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
              "description": "Configures how events are decoded from raw bytes.",
              "default": {
                "codec": "bytes"
              }
            },
            "drain_timeout_ms": {
              "title": "Timeout to drain pending acknowledgements during shutdown or a Kafka\nconsumer group rebalance.",
              "description": "When Vector shuts down or the Kafka consumer group revokes partitions from this\nconsumer, wait a maximum of `drain_timeout_ms` for the source to\nprocess pending acknowledgements. Must be less than `session_timeout_ms`\nto ensure the consumer is not excluded from the group during a rebalance.\n\nDefault value is half of `session_timeout_ms`.",
              "type": [
                "integer",
                "null"
              ],
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            },
            "fetch_wait_max_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "Maximum time the broker may wait to fill the response.",
              "default": 100
            },
            "framing": {
              "$ref": "#/$defs/codecs::decoding::FramingConfig",
              "title": "Framing configuration.",
              "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
              "default": {
                "method": "bytes"
              }
            },
            "group_id": {
              "description": "The consumer group name to be used to consume events from Kafka.",
              "type": "string"
            },
            "headers_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to add the headers to each event.",
              "description": "The value is the headers of the Kafka message itself.\n\nBy default, `\"headers\"` is used.",
              "default": "headers"
            },
            "key_field": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to add the message key to each event.",
              "description": "The value is the message key of the Kafka message itself.\n\nBy default, `\"message_key\"` is used.",
              "default": "message_key"
            },
            "librdkafka_options": {
              "title": "Advanced options set directly on the underlying `librdkafka` client.",
              "description": "See the [librdkafka documentation](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md) for details.",
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": "string"
              }
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "metrics": {
              "description": "Metrics (beta) configuration.",
              "default": {
                "topic_lag_metric": false
              },
              "type": "object",
              "required": [
                "topic_lag_metric"
              ],
              "properties": {
                "topic_lag_metric": {
                  "description": "Expose topic lag metrics for all topics and partitions. Metric names are `kafka_consumer_lag`.",
                  "type": "boolean"
                }
              }
            },
            "offset_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to add the offset to each event.",
              "description": "The value is the offset of the Kafka message itself.\n\nBy default, `\"offset\"` is used.",
              "default": "offset"
            },
            "partition_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to add the partition to each event.",
              "description": "The value is the partition from which the Kafka message was consumed from.\n\nBy default, `\"partition\"` is used.",
              "default": "partition"
            },
            "session_timeout_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "The Kafka session timeout.",
              "default": 10000
            },
            "socket_timeout_ms": {
              "$ref": "#/$defs/serde_with::DurationMilliSeconds",
              "description": "Timeout for network requests.",
              "default": 60000
            },
            "topic_key": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
              "title": "Overrides the name of the log field used to add the topic to each event.",
              "description": "The value is the topic from which the Kafka message was consumed from.\n\nBy default, `\"topic\"` is used.",
              "default": "topic"
            },
            "topics": {
              "title": "The Kafka topics names to read events from.",
              "description": "Regular expression syntax is supported if the topic begins with `^`.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        {
          "$ref": "#/$defs/vector::kafka::KafkaAuthConfig",
          "description": "Kafka authentication configuration."
        }
      ]
    },
    "vector::sources::kubernetes_logs::Config": {
      "description": "Configuration for the `kubernetes_logs` source.",
      "default": {
        "extra_label_selector": "",
        "extra_namespace_label_selector": "",
        "self_node_name": "${VECTOR_SELF_NODE_NAME}",
        "extra_field_selector": "",
        "auto_partial_merge": true,
        "data_dir": null,
        "pod_annotation_fields": {
          "pod_name": ".kubernetes.pod_name",
          "pod_namespace": ".kubernetes.pod_namespace",
          "pod_uid": ".kubernetes.pod_uid",
          "pod_ip": ".kubernetes.pod_ip",
          "pod_ips": ".kubernetes.pod_ips",
          "pod_labels": ".kubernetes.pod_labels",
          "pod_annotations": ".kubernetes.pod_annotations",
          "pod_node_name": ".kubernetes.pod_node_name",
          "pod_owner": ".kubernetes.pod_owner",
          "container_name": ".kubernetes.container_name",
          "container_id": ".kubernetes.container_id",
          "container_image": ".kubernetes.container_image",
          "container_image_id": ".kubernetes.container_image_id"
        },
        "namespace_annotation_fields": {
          "namespace_labels": ".kubernetes.namespace_labels"
        },
        "node_annotation_fields": {
          "node_labels": ".kubernetes.node_labels"
        },
        "include_paths_glob_patterns": [
          "**/*"
        ],
        "exclude_paths_glob_patterns": [
          "**/*.gz",
          "**/*.tmp"
        ],
        "read_from": "beginning",
        "ignore_older_secs": null,
        "max_read_bytes": 2048,
        "oldest_first": true,
        "max_line_bytes": 32768,
        "fingerprint_lines": 1,
        "glob_minimum_cooldown_ms": 60000,
        "ingestion_timestamp_field": null,
        "timezone": null,
        "kube_config_file": null,
        "use_apiserver_cache": false,
        "delay_deletion_ms": 60000,
        "log_namespace": null,
        "internal_metrics": {
          "include_file_tag": false
        },
        "rotate_wait_secs": 9223372036854775807
      },
      "type": "object",
      "properties": {
        "auto_partial_merge": {
          "title": "Whether or not to automatically merge partial events.",
          "description": "Partial events are messages that were split by the Kubernetes Container Runtime\nlog driver.",
          "type": "boolean"
        },
        "data_dir": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "The directory used to persist file checkpoint positions.",
          "description": "By default, the [global `data_dir` option][global_data_dir] is used.\nMake sure the running user has write permissions to this directory.\n\nIf this directory is specified, then Vector will attempt to create it.\n\n[global_data_dir]: <https://vector.dev/docs/reference/configuration/global-options/#data_dir>"
        },
        "delay_deletion_ms": {
          "$ref": "#/$defs/serde_with::DurationMilliSeconds",
          "title": "How long to delay removing metadata entries from the cache when a pod deletion event\nevent is received from the watch stream.",
          "description": "A longer delay allows for continued enrichment of logs after the originating Pod is\nremoved. If relevant metadata has been removed, the log is forwarded un-enriched and a\nwarning is emitted."
        },
        "exclude_paths_glob_patterns": {
          "description": "A list of glob patterns to exclude from reading the files.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/stdlib::PathBuf"
          }
        },
        "extra_field_selector": {
          "title": "Specifies the [field selector][field_selector] to filter Pods with, to be used in addition\nto the built-in [Node][node] filter.",
          "description": "The built-in Node filter uses `self_node_name` to only watch Pods located on the same Node.\n\n[field_selector]: <https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/>\n[node]: <https://kubernetes.io/docs/concepts/architecture/nodes/>",
          "type": "string"
        },
        "extra_label_selector": {
          "title": "Specifies the [label selector][label_selector] to filter [Pods][pods] with, to be used in\naddition to the built-in [exclude][exclude] filter.",
          "description": "[label_selector]: <https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors>\n[pods]: <https://kubernetes.io/docs/concepts/workloads/pods/>\n[exclude]: <https://vector.dev/docs/reference/configuration/sources/kubernetes_logs/#pod-exclusion>",
          "type": "string"
        },
        "extra_namespace_label_selector": {
          "title": "Specifies the [label selector][label_selector] to filter [Namespaces][namespaces] with, to\nbe used in addition to the built-in [exclude][exclude] filter.",
          "description": "[label_selector]: <https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors>\n[namespaces]: <https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/>\n[exclude]: <https://vector.dev/docs/reference/configuration/sources/kubernetes_logs/#namespace-exclusion>",
          "type": "string"
        },
        "fingerprint_lines": {
          "title": "The number of lines to read for generating the checksum.",
          "description": "If your files share a common header that is not always a fixed size,\n\nIf the file has less than this amount of lines, it won’t be read at all.",
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "glob_minimum_cooldown_ms": {
          "$ref": "#/$defs/serde_with::DurationMilliSeconds",
          "title": "The interval at which the file system is polled to identify new files to read from.",
          "description": "This is quite efficient, yet might still create some load on the\nfile system; in addition, it is currently coupled with checksum dumping\nin the underlying file server, so setting it too low may introduce\na significant overhead."
        },
        "ignore_older_secs": {
          "description": "Ignore files with a data modification date older than the specified number of seconds.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "include_paths_glob_patterns": {
          "description": "A list of glob patterns to include while reading the files.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/stdlib::PathBuf"
          }
        },
        "ingestion_timestamp_field": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "title": "Overrides the name of the log field used to add the ingestion timestamp to each event.",
          "description": "This is useful to compute the latency between important event processing\nstages. For example, the time delta between when a log line was written and when it was\nprocessed by the `kubernetes_logs` source."
        },
        "internal_metrics": {
          "$ref": "#/$defs/vector::internal_events::file::FileInternalMetricsConfig",
          "description": "Configuration of internal metrics for file-based components.",
          "default": {
            "include_file_tag": false
          }
        },
        "kube_config_file": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "Optional path to a readable [kubeconfig][kubeconfig] file.",
          "description": "If not set, a connection to Kubernetes is made using the in-cluster configuration.\n\n[kubeconfig]: <https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/>"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "max_line_bytes": {
          "title": "The maximum number of bytes a line can contain before being discarded.",
          "description": "This protects against malformed lines or tailing incorrect files.",
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "max_read_bytes": {
          "title": "Max amount of bytes to read from a single file before switching over to the next file.\n**Note:** This does not apply when `oldest_first` is `true`.",
          "description": "This allows distributing the reads more or less evenly across\nthe files.",
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "namespace_annotation_fields": {
          "description": "Configuration for how the events are enriched with Namespace metadata.",
          "default": {
            "namespace_labels": ".kubernetes.namespace_labels"
          },
          "type": "object",
          "properties": {
            "namespace_labels": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Namespace's labels.",
              "description": "Set to `\"\"` to suppress this key."
            }
          }
        },
        "node_annotation_fields": {
          "description": "Configuration for how the events are enriched with Node metadata.",
          "default": {
            "node_labels": ".kubernetes.node_labels"
          },
          "type": "object",
          "properties": {
            "node_labels": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Node's labels.",
              "description": "Set to `\"\"` to suppress this key."
            }
          }
        },
        "oldest_first": {
          "description": "Instead of balancing read capacity fairly across all watched files, prioritize draining the oldest files before moving on to read data from more recent files.",
          "default": true,
          "type": "boolean"
        },
        "pod_annotation_fields": {
          "description": "Configuration for how the events are enriched with Pod metadata.",
          "default": {
            "pod_name": ".kubernetes.pod_name",
            "pod_namespace": ".kubernetes.pod_namespace",
            "pod_uid": ".kubernetes.pod_uid",
            "pod_ip": ".kubernetes.pod_ip",
            "pod_ips": ".kubernetes.pod_ips",
            "pod_labels": ".kubernetes.pod_labels",
            "pod_annotations": ".kubernetes.pod_annotations",
            "pod_node_name": ".kubernetes.pod_node_name",
            "pod_owner": ".kubernetes.pod_owner",
            "container_name": ".kubernetes.container_name",
            "container_id": ".kubernetes.container_id",
            "container_image": ".kubernetes.container_image",
            "container_image_id": ".kubernetes.container_image_id"
          },
          "type": "object",
          "properties": {
            "container_id": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Container's ID.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "container_image": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Container's image.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "container_image_id": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Container's image ID.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "container_name": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Container's name.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_annotations": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's annotations.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_ip": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's IPv4 address.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_ips": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's IPv4 and IPv6 addresses.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_labels": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the `Pod`'s labels.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_name": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's name.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_namespace": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's namespace.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_node_name": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's node_name.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_owner": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's owner reference.",
              "description": "Set to `\"\"` to suppress this key."
            },
            "pod_uid": {
              "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalTargetPath",
              "title": "Event field for the Pod's UID.",
              "description": "Set to `\"\"` to suppress this key."
            }
          }
        },
        "read_from": {
          "$ref": "#/$defs/file_source::ReadFromConfig",
          "description": "File position to use when reading a new file.",
          "default": "beginning"
        },
        "rotate_wait_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "How long to keep an open handle to a rotated log file.\nThe default value represents \"no limit\"",
          "default": 9223372036854775807
        },
        "self_node_name": {
          "title": "The name of the Kubernetes [Node][node] that is running.",
          "description": "Configured to use an environment variable by default, to be evaluated to a value provided by\nKubernetes at Pod creation.\n\n[node]: <https://kubernetes.io/docs/concepts/architecture/nodes/>",
          "type": "string"
        },
        "timezone": {
          "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
          "description": "The default time zone for timestamps without an explicit zone."
        },
        "use_apiserver_cache": {
          "description": "Determines if requests to the kube-apiserver can be served by a cache.",
          "type": "boolean"
        }
      }
    },
    "vector::sources::logstash::LogstashConfig": {
      "description": "Configuration for the `logstash` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
          "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
          "description": "If a socket address is used, it _must_ include a port."
        },
        "connection_limit": {
          "description": "The maximum number of TCP connections that are allowed at any given time.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 4294967295.0,
          "minimum": 0.0
        },
        "keepalive": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "permit_origin": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
        },
        "receive_buffer_bytes": {
          "description": "The size of the receive buffer used for each connection.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E"
        }
      }
    },
    "vector::sources::mongodb_metrics::MongoDbMetricsConfig": {
      "description": "Configuration for the `mongodb_metrics` source.",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "endpoints": {
          "title": "A list of MongoDB instances to scrape.",
          "description": "Each endpoint must be in the [Connection String URI Format](https://www.mongodb.com/docs/manual/reference/connection-string/).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "namespace": {
          "title": "Overrides the default namespace for the metrics emitted by the source.",
          "description": "If set to an empty string, no namespace is added to the metrics.\n\nBy default, `mongodb` is used.",
          "default": "mongodb",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes, in seconds.",
          "default": 15
        }
      }
    },
    "vector::sources::nats::NatsSourceConfig": {
      "description": "Configuration for the `nats` source.",
      "type": "object",
      "required": [
        "connection_name",
        "subject",
        "url"
      ],
      "properties": {
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::nats::NatsAuthConfig%3E"
        },
        "connection_name": {
          "title": "A [name][nats_connection_name] assigned to the NATS connection.",
          "description": "[nats_connection_name]: <https://docs.nats.io/using-nats/developer/connecting/name>",
          "type": "string"
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "queue": {
          "description": "The NATS queue group to join.",
          "type": [
            "string",
            "null"
          ]
        },
        "subject": {
          "title": "The NATS [subject][nats_subject] to pull messages from.",
          "description": "[nats_subject]: <https://docs.nats.io/nats-concepts/subjects>",
          "type": "string"
        },
        "subject_key_field": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "description": "The `NATS` subject key.",
          "default": "subject"
        },
        "subscriber_capacity": {
          "title": "The buffer capacity of the underlying NATS subscriber.",
          "description": "This value determines how many messages the NATS subscriber buffers\nbefore incoming messages are dropped.\n\nSee the [async_nats documentation][async_nats_subscription_capacity] for more information.\n\n[async_nats_subscription_capacity]: <https://docs.rs/async-nats/latest/async_nats/struct.ConnectOptions.html#method.subscription_capacity>",
          "default": 65536,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        },
        "url": {
          "title": "The NATS URL to connect to.",
          "description": "The URL takes the form of `nats://server:port`.\nIf the port is not specified it defaults to 4222.",
          "type": "string"
        }
      }
    },
    "vector::sources::nginx_metrics::NginxMetricsConfig": {
      "description": "Configuration for the `nginx_metrics` source.",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "endpoints": {
          "title": "A list of NGINX instances to scrape.",
          "description": "Each endpoint must be a valid HTTP/HTTPS URI pointing to an NGINX instance that has the\n`ngx_http_stub_status_module` module enabled.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "namespace": {
          "title": "Overrides the default namespace for the metrics emitted by the source.",
          "description": "If set to an empty string, no namespace is added to the metrics.\n\nBy default, `nginx` is used.",
          "default": "nginx",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes.",
          "default": 15
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sources::opentelemetry::OpentelemetryConfig": {
      "description": "Configuration for the `opentelemetry` source.",
      "type": "object",
      "required": [
        "grpc",
        "http"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "grpc": {
          "description": "Configuration for the `opentelemetry` gRPC server.",
          "type": "object",
          "required": [
            "address"
          ],
          "properties": {
            "address": {
              "$ref": "#/$defs/stdlib::SocketAddr",
              "title": "The socket address to listen for connections on.",
              "description": "It _must_ include a port."
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E",
              "default": null
            }
          }
        },
        "http": {
          "description": "Configuration for the `opentelemetry` HTTP server.",
          "type": "object",
          "required": [
            "address"
          ],
          "properties": {
            "address": {
              "$ref": "#/$defs/stdlib::SocketAddr",
              "title": "The socket address to listen for connections on.",
              "description": "It _must_ include a port."
            },
            "headers": {
              "title": "A list of HTTP headers to include in the log event.",
              "description": "Accepts the wildcard (`*`) character for headers matching a specified pattern.\n\nSpecifying \"*\" results in all headers included in the log event.\n\nThese headers are not included in the JSON payload if a field with a conflicting name exists.",
              "default": [],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "keepalive": {
              "$ref": "#/$defs/vector::http::KeepaliveConfig",
              "description": "Configuration of HTTP server keepalive parameters.",
              "default": {
                "max_connection_age_secs": 300,
                "max_connection_age_jitter_factor": 0.1
              }
            },
            "tls": {
              "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E",
              "default": null
            }
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "vector::sources::postgresql_metrics::PostgresqlMetricsConfig": {
      "description": "Configuration for the `postgresql_metrics` source.",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "endpoints": {
          "title": "A list of PostgreSQL instances to scrape.",
          "description": "Each endpoint must be in the [Connection URI\nformat](https://www.postgresql.org/docs/current/libpq-connect.html#id-1.7.3.8.3.6).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "exclude_databases": {
          "title": "A list of databases to match (by using [POSIX Regular\nExpressions](https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-POSIX-REGEXP)) against\nthe `datname` column for which you don’t want to collect metrics from.",
          "description": "Specifying `\"\"` includes metrics where `datname` is `NULL`.\n\nThis can be used in conjunction with `include_databases`.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "include_databases": {
          "title": "A list of databases to match (by using [POSIX Regular\nExpressions](https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-POSIX-REGEXP)) against\nthe `datname` column for which you want to collect metrics from.",
          "description": "If not set, metrics are collected from all databases. Specifying `\"\"` includes metrics where `datname` is\n`NULL`.\n\nThis can be used in conjunction with `exclude_databases`.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "namespace": {
          "description": "Overrides the default namespace for the metrics emitted by the source.",
          "default": "postgresql",
          "type": "string"
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes.",
          "default": 15
        },
        "tls": {
          "description": "Configuration of TLS when connecting to PostgreSQL.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Configuration of TLS when connecting to PostgreSQL.",
              "type": "object",
              "required": [
                "ca_file"
              ],
              "properties": {
                "ca_file": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "title": "Absolute path to an additional CA certificate file.",
                  "description": "The certificate must be in the DER or PEM (X.509) format."
                }
              }
            }
          ]
        }
      }
    },
    "vector::sources::prometheus::pushgateway::PrometheusPushgatewayConfig": {
      "description": "Configuration for the `prometheus_pushgateway` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to accept connections on.",
          "description": "The address _must_ include a port."
        },
        "aggregate_metrics": {
          "title": "Whether to aggregate values across pushes.",
          "description": "Only applies to counters and histograms as gauges and summaries can't be\nmeaningfully aggregated.",
          "default": false,
          "type": "boolean"
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::http::auth::HttpSourceAuthConfig%3E"
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::prometheus::remote_write::PrometheusRemoteWriteConfig": {
      "description": "Configuration for the `prometheus_remote_write` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to accept connections on.",
          "description": "The address _must_ include a port."
        },
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::sources::util::http::auth::HttpSourceAuthConfig%3E"
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        }
      }
    },
    "vector::sources::prometheus::scrape::PrometheusScrapeConfig": {
      "description": "Configuration for the `prometheus_scrape` source.",
      "type": "object",
      "required": [
        "endpoints"
      ],
      "properties": {
        "auth": {
          "$ref": "#/$defs/core::option::Option%3Cvector::http::Auth%3E"
        },
        "endpoint_tag": {
          "title": "The tag name added to each event representing the scraped instance's endpoint.",
          "description": "The tag value is the endpoint of the scraped instance.",
          "type": [
            "string",
            "null"
          ]
        },
        "endpoints": {
          "description": "Endpoints to scrape metrics from.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "honor_labels": {
          "title": "Controls how tag conflicts are handled if the scraped source has tags to be added.",
          "description": "If `true`, the new tag is not added if the scraped metric has the tag already. If `false`, the conflicting tag\nis renamed by prepending `exported_` to the original name.\n\nThis matches Prometheus’ `honor_labels` configuration.",
          "default": false,
          "type": "boolean"
        },
        "instance_tag": {
          "title": "The tag name added to each event representing the scraped instance's `host:port`.",
          "description": "The tag value is the host and port of the scraped instance.",
          "type": [
            "string",
            "null"
          ]
        },
        "query": {
          "title": "Custom parameters for the scrape request query string.",
          "description": "One or more values for the same parameter key can be provided. The parameters provided in this option are\nappended to any parameters manually provided in the `endpoints` option. This option is especially useful when\nscraping the `/federate` endpoint.",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "scrape_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between scrapes. Requests are run concurrently so if a scrape takes longer\nthan the interval a new scrape will be started. This can take extra resources, set the timeout\nto a value lower than the scrape interval to prevent this from happening.",
          "default": 15
        },
        "scrape_timeout_secs": {
          "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
          "description": "The timeout for each scrape request.",
          "default": 5.0
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsConfig%3E"
        }
      }
    },
    "vector::sources::pulsar::PulsarSourceConfig": {
      "description": "Configuration for the `pulsar` source.",
      "type": "object",
      "required": [
        "endpoint",
        "topics"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "auth": {
          "description": "Authentication configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Authentication configuration.",
              "oneOf": [
                {
                  "description": "Basic authentication.",
                  "type": "object",
                  "required": [
                    "name",
                    "token"
                  ],
                  "properties": {
                    "name": {
                      "title": "Basic authentication name/username.",
                      "description": "This can be used either for basic authentication (username/password) or JWT authentication.\nWhen used for JWT, the value should be `token`.",
                      "type": "string"
                    },
                    "token": {
                      "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString",
                      "title": "Basic authentication password/token.",
                      "description": "This can be used either for basic authentication (username/password) or JWT authentication.\nWhen used for JWT, the value should be the signed JWT, in the compact representation."
                    }
                  }
                },
                {
                  "description": "OAuth authentication.",
                  "type": "object",
                  "required": [
                    "oauth2"
                  ],
                  "properties": {
                    "oauth2": {
                      "description": "OAuth2-specific authentication configuration.",
                      "type": "object",
                      "required": [
                        "credentials_url",
                        "issuer_url"
                      ],
                      "properties": {
                        "audience": {
                          "description": "The OAuth2 audience.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "credentials_url": {
                          "title": "The credentials URL.",
                          "description": "A data URL is also supported.",
                          "type": "string"
                        },
                        "issuer_url": {
                          "description": "The issuer URL.",
                          "type": "string"
                        },
                        "scope": {
                          "description": "The OAuth2 scope.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              ]
            }
          ]
        },
        "batch_size": {
          "description": "Max count of messages in a batch.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 4294967295.0,
          "minimum": 0.0
        },
        "consumer_name": {
          "description": "The Pulsar consumer name.",
          "type": [
            "string",
            "null"
          ]
        },
        "dead_letter_queue_policy": {
          "description": "Dead Letter Queue policy configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Dead Letter Queue policy configuration.",
              "type": "object",
              "required": [
                "dead_letter_topic",
                "max_redeliver_count"
              ],
              "properties": {
                "dead_letter_topic": {
                  "description": "Name of the dead letter topic where the failing messages will be sent.",
                  "type": "string"
                },
                "max_redeliver_count": {
                  "description": "Maximum number of times that a message will be redelivered before being sent to the dead letter queue.",
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "endpoint": {
          "description": "The endpoint to which the Pulsar client should connect to.",
          "type": "string"
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "priority_level": {
          "title": "The consumer's priority level.",
          "description": "The broker follows descending priorities. For example, 0=max-priority, 1, 2,...\n\nIn Shared subscription type, the broker first dispatches messages to the max priority level consumers if they have permits. Otherwise, the broker considers next priority level consumers.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 2147483647.0,
          "minimum": -2147483648.0
        },
        "subscription_name": {
          "description": "The Pulsar subscription name.",
          "type": [
            "string",
            "null"
          ]
        },
        "topics": {
          "description": "The Pulsar topic names to read events from.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "vector::sources::redis::RedisSourceConfig": {
      "description": "Configuration for the `redis` source.",
      "type": "object",
      "required": [
        "key",
        "url"
      ],
      "properties": {
        "data_type": {
          "description": "The Redis data type (`list` or `channel`) to use.",
          "default": "list",
          "oneOf": [
            {
              "description": "The `list` data type.",
              "const": "list"
            },
            {
              "title": "The `channel` data type.",
              "description": "This is based on Redis' Pub/Sub capabilities.",
              "const": "channel"
            }
          ]
        },
        "decoding": {
          "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
          "description": "Configures how events are decoded from raw bytes.",
          "default": {
            "codec": "bytes"
          }
        },
        "framing": {
          "$ref": "#/$defs/codecs::decoding::FramingConfig",
          "title": "Framing configuration.",
          "description": "Framing handles how events are separated when encoded in a raw byte form, where each event is\na frame that must be prefixed, or delimited, in a way that marks where an event begins and\nends within the byte stream.",
          "default": {
            "method": "bytes"
          }
        },
        "key": {
          "description": "The Redis key to read messages from.",
          "type": "string"
        },
        "list": {
          "description": "Options for the Redis `list` data type.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Options for the Redis `list` data type.",
              "type": "object",
              "required": [
                "method"
              ],
              "properties": {
                "method": {
                  "description": "Method for getting events from the `list` data type.",
                  "oneOf": [
                    {
                      "description": "Pop messages from the head of the list.",
                      "const": "lpop"
                    },
                    {
                      "description": "Pop messages from the tail of the list.",
                      "const": "rpop"
                    }
                  ]
                }
              }
            }
          ]
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "redis_key": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
          "title": "Sets the name of the log field to use to add the key to each event.",
          "description": "The value is the Redis key that the event was read from.\n\nBy default, this is not set and the field is not automatically added."
        },
        "url": {
          "title": "The Redis URL to connect to.",
          "description": "The URL must take the form of `protocol://server:port/db` where the `protocol` can either be `redis` or `rediss` for connections secured using TLS.",
          "type": "string"
        }
      }
    },
    "vector::sources::socket::SocketConfig": {
      "description": "Configuration for the `socket` source.",
      "allOf": [
        {
          "description": "Listening mode for the `socket` source.",
          "oneOf": [
            {
              "description": "Listen on TCP.",
              "allOf": [
                {
                  "description": "TCP configuration for the `socket` source.",
                  "type": "object",
                  "required": [
                    "address"
                  ],
                  "properties": {
                    "address": {
                      "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                      "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                      "description": "If a socket address is used, it _must_ include a port."
                    },
                    "connection_limit": {
                      "description": "The maximum number of TCP connections that are allowed at any given time.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 4294967295.0,
                      "minimum": 0.0
                    },
                    "decoding": {
                      "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
                      "description": "Configures how events are decoded from raw bytes.",
                      "default": {
                        "codec": "bytes"
                      }
                    },
                    "framing": {
                      "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
                    },
                    "host_key": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
                      "title": "Overrides the name of the log field used to add the peer host to each event.",
                      "description": "The value will be the peer host's address, including the port i.e. `1.2.3.4:9000`.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
                    },
                    "keepalive": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                    },
                    "log_namespace": {
                      "description": "The namespace to use for logs. This overrides the global setting.",
                      "default": null,
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "max_connection_duration_secs": {
                      "title": "Maximum duration to keep each connection open. Connections open for longer than this duration are closed.",
                      "description": "This is helpful for load balancing long-lived connections.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "permit_origin": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
                    },
                    "port_key": {
                      "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
                      "title": "Overrides the name of the log field used to add the peer host's port to each event.",
                      "description": "The value will be the peer host's port i.e. `9000`.\n\nBy default, `\"port\"` is used.\n\nSet to `\"\"` to suppress this key.",
                      "default": "port"
                    },
                    "receive_buffer_bytes": {
                      "description": "The size of the receive buffer used for each connection.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "shutdown_timeout_secs": {
                      "$ref": "#/$defs/serde_with::DurationSeconds",
                      "description": "The timeout before a connection is forcefully closed during shutdown.",
                      "default": 30
                    },
                    "tls": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on TCP.",
                      "const": "tcp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Listen on UDP.",
              "allOf": [
                {
                  "description": "UDP configuration for the `socket` source.",
                  "type": "object",
                  "required": [
                    "address"
                  ],
                  "properties": {
                    "address": {
                      "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                      "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                      "description": "If a socket address is used, it _must_ include a port."
                    },
                    "decoding": {
                      "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
                      "description": "Configures how events are decoded from raw bytes.",
                      "default": {
                        "codec": "bytes"
                      }
                    },
                    "framing": {
                      "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E"
                    },
                    "host_key": {
                      "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
                      "title": "Overrides the name of the log field used to add the peer host to each event.",
                      "description": "The value will be the peer host's address, including the port i.e. `1.2.3.4:9000`.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
                    },
                    "log_namespace": {
                      "description": "The namespace to use for logs. This overrides the global setting.",
                      "default": null,
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "max_length": {
                      "title": "The maximum buffer size of incoming messages.",
                      "description": "Messages larger than this are truncated.",
                      "default": 102400,
                      "type": "integer",
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    },
                    "port_key": {
                      "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
                      "title": "Overrides the name of the log field used to add the peer host's port to each event.",
                      "description": "The value will be the peer host's port i.e. `9000`.\n\nBy default, `\"port\"` is used.\n\nSet to `\"\"` to suppress this key.",
                      "default": "port"
                    },
                    "receive_buffer_bytes": {
                      "description": "The size of the receive buffer used for the listening socket.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on UDP.",
                      "const": "udp"
                    }
                  }
                }
              ]
            },
            {
              "description": "Listen on a Unix domain socket (UDS), in datagram mode.",
              "allOf": [
                {
                  "description": "Unix domain socket configuration for the `socket` source.",
                  "type": "object",
                  "required": [
                    "path"
                  ],
                  "properties": {
                    "decoding": {
                      "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
                      "description": "Configures how events are decoded from raw bytes.",
                      "default": {
                        "codec": "bytes"
                      }
                    },
                    "framing": {
                      "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E",
                      "default": null
                    },
                    "host_key": {
                      "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
                      "title": "Overrides the name of the log field used to add the peer host to each event.",
                      "description": "The value will be the peer host's address, including the port i.e. `1.2.3.4:9000`.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>",
                      "default": "host"
                    },
                    "log_namespace": {
                      "description": "The namespace to use for logs. This overrides the global setting.",
                      "default": null,
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "path": {
                      "$ref": "#/$defs/stdlib::PathBuf",
                      "title": "The Unix socket path.",
                      "description": "This should be an absolute path."
                    },
                    "socket_file_mode": {
                      "title": "Unix file mode bits to be applied to the unix socket file as its designated file permissions.",
                      "description": "Note: The file mode value can be specified in any numeric format supported by your configuration\nlanguage, but it is most intuitive to use an octal number.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 4294967295.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on a Unix domain socket (UDS), in datagram mode.",
                      "const": "unix_datagram"
                    }
                  }
                }
              ]
            },
            {
              "description": "Listen on a Unix domain socket (UDS), in stream mode.",
              "allOf": [
                {
                  "description": "Unix domain socket configuration for the `socket` source.",
                  "type": "object",
                  "required": [
                    "path"
                  ],
                  "properties": {
                    "decoding": {
                      "$ref": "#/$defs/codecs::decoding::DeserializerConfig",
                      "description": "Configures how events are decoded from raw bytes.",
                      "default": {
                        "codec": "bytes"
                      }
                    },
                    "framing": {
                      "$ref": "#/$defs/core::option::Option%3Ccodecs::decoding::FramingConfig%3E",
                      "default": null
                    },
                    "host_key": {
                      "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
                      "title": "Overrides the name of the log field used to add the peer host to each event.",
                      "description": "The value will be the peer host's address, including the port i.e. `1.2.3.4:9000`.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\nSet to `\"\"` to suppress this key.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>",
                      "default": "host"
                    },
                    "log_namespace": {
                      "description": "The namespace to use for logs. This overrides the global setting.",
                      "default": null,
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "path": {
                      "$ref": "#/$defs/stdlib::PathBuf",
                      "title": "The Unix socket path.",
                      "description": "This should be an absolute path."
                    },
                    "socket_file_mode": {
                      "title": "Unix file mode bits to be applied to the unix socket file as its designated file permissions.",
                      "description": "Note: The file mode value can be specified in any numeric format supported by your configuration\nlanguage, but it is most intuitive to use an octal number.",
                      "type": [
                        "integer",
                        "null"
                      ],
                      "maximum": 4294967295.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "description": "Listen on a Unix domain socket (UDS), in stream mode.",
                      "const": "unix_stream"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::sources::splunk_hec::SplunkConfig": {
      "description": "Configuration for the `splunk_hec` source.",
      "default": {
        "address": "0.0.0.0:8088",
        "token": null,
        "valid_tokens": null,
        "store_hec_token": false,
        "tls": null,
        "acknowledgements": {
          "enabled": null,
          "max_pending_acks": 10000000,
          "max_number_of_ack_channels": 1000000,
          "max_pending_acks_per_channel": 1000000,
          "ack_idle_cleanup": false,
          "max_idle_time": 300
        },
        "log_namespace": null,
        "keepalive": {
          "max_connection_age_secs": 300,
          "max_connection_age_jitter_factor": 0.1
        }
      },
      "type": "object",
      "properties": {
        "acknowledgements": {
          "description": "Acknowledgement configuration for the `splunk_hec` source.",
          "default": {
            "enabled": null,
            "max_pending_acks": 10000000,
            "max_number_of_ack_channels": 1000000,
            "max_pending_acks_per_channel": 1000000,
            "ack_idle_cleanup": false,
            "max_idle_time": 300
          },
          "type": "object",
          "properties": {
            "ack_idle_cleanup": {
              "title": "Whether or not to remove channels after idling for `max_idle_time` seconds.",
              "description": "A channel is idling if it is not used for sending data or querying acknowledgement statuses.",
              "type": "boolean"
            },
            "enabled": {
              "description": "Enables end-to-end acknowledgements.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "max_idle_time": {
              "title": "The amount of time, in seconds, a channel is allowed to idle before removal.",
              "description": "Channels can potentially idle for longer than this setting but clients should not rely on such behavior.\n\nMinimum of `1`.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "max_number_of_ack_channels": {
              "title": "The maximum number of Splunk HEC channels clients can use with this source.",
              "description": "Minimum of `1`.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "max_pending_acks": {
              "title": "The maximum number of acknowledgement statuses pending query across all channels.",
              "description": "Equivalent to the `max_number_of_acked_requests_pending_query` Splunk HEC setting.\n\nMinimum of `1`.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            },
            "max_pending_acks_per_channel": {
              "title": "The maximum number of acknowledgement statuses pending query for a single channel.",
              "description": "Equivalent to the `max_number_of_acked_requests_pending_query_per_ack_channel` Splunk HEC setting.\n\nMinimum of `1`.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            }
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to listen for connections on.",
          "description": "The address _must_ include a port.",
          "default": "0.0.0.0:8088"
        },
        "keepalive": {
          "$ref": "#/$defs/vector::http::KeepaliveConfig",
          "description": "Configuration of HTTP server keepalive parameters.",
          "default": {
            "max_connection_age_secs": 300,
            "max_connection_age_jitter_factor": 0.1
          }
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global settings.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "store_hec_token": {
          "title": "Whether or not to forward the Splunk HEC authentication token with events.",
          "description": "If set to `true`, when incoming requests contain a Splunk HEC token, the token used is kept in the\nevent metadata and preferentially used if the event is sent to a Splunk HEC sink.",
          "type": "boolean"
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E"
        },
        "token": {
          "$ref": "#/$defs/core::option::Option%3Cvector_common::sensitive_string::SensitiveString%3E",
          "title": "Optional authorization token.",
          "description": "If supplied, incoming requests must supply this token in the `Authorization` header, just as a client would if\nit was communicating with the Splunk HEC endpoint directly.\n\nIf _not_ supplied, the `Authorization` header is ignored and requests are not authenticated.",
          "deprecated": true
        },
        "valid_tokens": {
          "title": "A list of valid authorization tokens.",
          "description": "If supplied, incoming requests must supply one of these tokens in the `Authorization` header, just as a client\nwould if it was communicating with the Splunk HEC endpoint directly.\n\nIf _not_ supplied, the `Authorization` header is ignored and requests are not authenticated.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/vector_common::sensitive_string::SensitiveString"
          }
        }
      }
    },
    "vector::sources::static_metrics::StaticMetricsConfig": {
      "description": "Configuration for the `static_metrics` source.",
      "type": "object",
      "properties": {
        "interval_secs": {
          "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
          "description": "The interval between metric emitting, in seconds.",
          "default": 1.0
        },
        "metrics": {
          "description": "Tag configuration for the `internal_metrics` source.",
          "default": [],
          "type": "array",
          "items": {
            "description": "Tag configuration for the `internal_metrics` source.",
            "type": "object",
            "required": [
              "kind",
              "name",
              "value"
            ],
            "properties": {
              "kind": {
                "$ref": "#/$defs/vector_core::event::metric::MetricKind",
                "description": "Kind of the static metric - either absolute or incremental"
              },
              "name": {
                "description": "Name of the static metric",
                "type": "string"
              },
              "tags": {
                "description": "Key-value pairs representing tags and their values to add to the metric.",
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "value": {
                "$ref": "#/$defs/vector_core::event::metric::value::MetricValue",
                "description": "\"Observed\" value of the static metric"
              }
            }
          }
        },
        "namespace": {
          "description": "Overrides the default namespace for the metrics emitted by the source.",
          "default": "static",
          "type": "string"
        }
      }
    },
    "vector::sources::statsd::StatsdConfig": {
      "description": "Configuration for the `statsd` source.",
      "oneOf": [
        {
          "description": "Listen on TCP.",
          "allOf": [
            {
              "description": "TCP configuration for the `statsd` source.",
              "type": "object",
              "required": [
                "address"
              ],
              "properties": {
                "address": {
                  "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                  "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                  "description": "If a socket address is used, it _must_ include a port."
                },
                "connection_limit": {
                  "description": "The maximum number of TCP connections that are allowed at any given time.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "keepalive": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                },
                "permit_origin": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
                },
                "receive_buffer_bytes": {
                  "description": "The size of the receive buffer used for each connection.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "sanitize": {
                  "description": "Whether or not to sanitize incoming statsd key names. When \"true\", keys are sanitized by:\n- \"/\" is replaced with \"-\"\n- All whitespace is replaced with \"_\"\n- All non alphanumeric characters (A-Z, a-z, 0-9, _, or -) are removed.",
                  "default": true,
                  "type": "boolean"
                },
                "shutdown_timeout_secs": {
                  "$ref": "#/$defs/serde_with::DurationSeconds",
                  "description": "The timeout before a connection is forcefully closed during shutdown.",
                  "default": 30
                },
                "tls": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E",
                  "default": null
                }
              }
            },
            {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "description": "Listen on TCP.",
                  "const": "tcp"
                }
              }
            }
          ]
        },
        {
          "description": "Listen on UDP.",
          "allOf": [
            {
              "description": "UDP configuration for the `statsd` source.",
              "type": "object",
              "required": [
                "address"
              ],
              "properties": {
                "address": {
                  "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                  "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                  "description": "If a socket address is used, it _must_ include a port."
                },
                "receive_buffer_bytes": {
                  "description": "The size of the receive buffer used for each connection.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "sanitize": {
                  "default": true,
                  "type": "boolean"
                }
              }
            },
            {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "description": "Listen on UDP.",
                  "const": "udp"
                }
              }
            }
          ]
        },
        {
          "description": "Listen on a Unix domain Socket (UDS).",
          "allOf": [
            {
              "description": "Unix domain socket configuration for the `statsd` source.",
              "type": "object",
              "required": [
                "path"
              ],
              "properties": {
                "path": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "title": "The Unix socket path.",
                  "description": "This should be an absolute path."
                },
                "sanitize": {
                  "default": true,
                  "type": "boolean"
                }
              }
            },
            {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "description": "Listen on a Unix domain Socket (UDS).",
                  "const": "unix"
                }
              }
            }
          ]
        }
      ]
    },
    "vector::sources::syslog::SyslogConfig": {
      "description": "Configuration for the `syslog` source.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "host_key": {
              "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalValuePath%3E",
              "title": "Overrides the name of the log field used to add the peer host to each event.",
              "description": "If using TCP or UDP, the value is the peer host's address, including the port. For example, `1.2.3.4:9000`. If using\nUDS, the value is the socket path itself.\n\nBy default, the [global `log_schema.host_key` option][global_host_key] is used.\n\n[global_host_key]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema.host_key>"
            },
            "log_namespace": {
              "description": "The namespace to use for logs. This overrides the global setting.",
              "default": null,
              "type": [
                "boolean",
                "null"
              ]
            },
            "max_length": {
              "title": "The maximum buffer size of incoming messages, in bytes.",
              "description": "Messages larger than this are truncated.",
              "default": 102400,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        },
        {
          "description": "Listener mode for the `syslog` source.",
          "oneOf": [
            {
              "description": "Listen on TCP.",
              "type": "object",
              "required": [
                "address",
                "mode"
              ],
              "properties": {
                "address": {
                  "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                  "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                  "description": "If a socket address is used, it _must_ include a port."
                },
                "connection_limit": {
                  "description": "The maximum number of TCP connections that are allowed at any given time.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                },
                "keepalive": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::tcp::TcpKeepaliveConfig%3E"
                },
                "mode": {
                  "description": "Listen on TCP.",
                  "const": "tcp"
                },
                "permit_origin": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::ipallowlist::IpAllowlistConfig%3E"
                },
                "receive_buffer_bytes": {
                  "title": "The size of the receive buffer used for each connection.",
                  "description": "This should not typically needed to be changed.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "tls": {
                  "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsSourceConfig%3E"
                }
              }
            },
            {
              "description": "Listen on UDP.",
              "type": "object",
              "required": [
                "address",
                "mode"
              ],
              "properties": {
                "address": {
                  "$ref": "#/$defs/vector::sources::util::net::SocketListenAddr",
                  "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
                  "description": "If a socket address is used, it _must_ include a port."
                },
                "mode": {
                  "description": "Listen on UDP.",
                  "const": "udp"
                },
                "receive_buffer_bytes": {
                  "title": "The size of the receive buffer used for the listening socket.",
                  "description": "This should not typically needed to be changed.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                }
              }
            },
            {
              "title": "Listen on UDS (Unix domain socket). This only supports Unix stream sockets.",
              "description": "For Unix datagram sockets, use the `socket` source instead.",
              "type": "object",
              "required": [
                "mode",
                "path"
              ],
              "properties": {
                "mode": {
                  "title": "Listen on UDS (Unix domain socket). This only supports Unix stream sockets.",
                  "description": "For Unix datagram sockets, use the `socket` source instead.",
                  "const": "unix"
                },
                "path": {
                  "$ref": "#/$defs/stdlib::PathBuf",
                  "title": "The Unix socket path.",
                  "description": "This should be an absolute path."
                },
                "socket_file_mode": {
                  "title": "Unix file mode bits to be applied to the unix socket file as its designated file permissions.",
                  "description": "The file mode value can be specified in any numeric format supported by your configuration\nlanguage, but it is most intuitive to use an octal number.",
                  "type": [
                    "integer",
                    "null"
                  ],
                  "maximum": 4294967295.0,
                  "minimum": 0.0
                }
              }
            }
          ]
        }
      ]
    },
    "vector::sources::util::http::method::HttpMethod": {
      "description": "HTTP method.",
      "oneOf": [
        {
          "description": "HTTP HEAD method.",
          "const": "HEAD"
        },
        {
          "description": "HTTP GET method.",
          "const": "GET"
        },
        {
          "description": "HTTP POST method.",
          "const": "POST"
        },
        {
          "description": "HTTP Put method.",
          "const": "PUT"
        },
        {
          "description": "HTTP PATCH method.",
          "const": "PATCH"
        },
        {
          "description": "HTTP DELETE method.",
          "const": "DELETE"
        },
        {
          "description": "HTTP OPTIONS method.",
          "const": "OPTIONS"
        }
      ]
    },
    "vector::sources::util::net::SocketListenAddr": {
      "title": "The socket address to listen for connections on, or `systemd{#N}` to use the Nth socket passed by\nsystemd socket activation.",
      "description": "If a socket address is used, it _must_ include a port.",
      "type": "string"
    },
    "vector::sources::vector::VectorConfig": {
      "description": "Configuration for the `vector` source.",
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "acknowledgements": {
          "$ref": "#/$defs/vector_core::config::SourceAcknowledgementsConfig",
          "title": "Controls how acknowledgements are handled by this source.",
          "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
          "default": {
            "enabled": null
          }
        },
        "address": {
          "$ref": "#/$defs/stdlib::SocketAddr",
          "title": "The socket address to listen for connections on.",
          "description": "It _must_ include a port."
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "tls": {
          "$ref": "#/$defs/core::option::Option%3Cvector_core::tls::settings::TlsEnableableConfig%3E",
          "default": null
        },
        "version": {
          "description": "Version of the configuration.",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "description": "Marker type for version two of the configuration for the `vector` source.",
              "oneOf": [
                {
                  "description": "Marker value for version two.",
                  "const": "2"
                }
              ]
            }
          ]
        }
      }
    },
    "vector::template::Template": {
      "title": "A templated field.",
      "description": "In many cases, components can be configured so that part of the component's functionality can be\ncustomized on a per-event basis. For example, you have a sink that writes events to a file and you want to\nspecify which file an event should go to by using an event field as part of the\ninput to the filename used.\n\nBy using `Template`, users can specify either fixed strings or templated strings. Templated strings use a common syntax to\nrefer to fields in an event that is used as the input data when rendering the template. An example of a fixed string\nis `my-file.log`. An example of a template string is `my-file-{{key}}.log`, where `{{key}}`\nis the key's value when the template is rendered into a string.",
      "type": "string"
    },
    "vector::transforms::Transforms": {
      "description": "Configurable transforms in Vector.",
      "oneOf": [
        {
          "description": "Aggregate metrics passing through a topology.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::aggregate::AggregateConfig",
              "description": "Configuration for the `aggregate` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Aggregate metrics passing through a topology.",
                  "const": "aggregate"
                }
              }
            }
          ]
        },
        {
          "description": "Parse metadata emitted by AWS EC2 instances.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::aws_ec2_metadata::Ec2Metadata",
              "description": "Configuration for the `aws_ec2_metadata` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Parse metadata emitted by AWS EC2 instances.",
                  "const": "aws_ec2_metadata"
                }
              }
            }
          ]
        },
        {
          "description": "Deduplicate logs passing through a topology.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::dedupe::config::DedupeConfig",
              "description": "Configuration for the `dedupe` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Deduplicate logs passing through a topology.",
                  "const": "dedupe"
                }
              }
            }
          ]
        },
        {
          "description": "Split a stream of events into unique sub-streams based on user-supplied conditions.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::exclusive_route::config::ExclusiveRouteConfig",
              "description": "Configuration for the `route` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Split a stream of events into unique sub-streams based on user-supplied conditions.",
                  "const": "exclusive_route"
                }
              }
            }
          ]
        },
        {
          "description": "Filter events based on a set of conditions.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::filter::FilterConfig",
              "description": "Configuration for the `filter` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Filter events based on a set of conditions.",
                  "const": "filter"
                }
              }
            }
          ]
        },
        {
          "description": "Convert log events to metric events.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::log_to_metric::LogToMetricConfig",
              "description": "Configuration for the `log_to_metric` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Convert log events to metric events.",
                  "const": "log_to_metric"
                }
              }
            }
          ]
        },
        {
          "description": "Modify event data using the Lua programming language.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::lua::LuaConfig",
              "description": "Configuration for the `lua` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Modify event data using the Lua programming language.",
                  "const": "lua"
                }
              }
            }
          ]
        },
        {
          "description": "Convert metric events to log events.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::metric_to_log::MetricToLogConfig",
              "description": "Configuration for the `metric_to_log` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Convert metric events to log events.",
                  "const": "metric_to_log"
                }
              }
            }
          ]
        },
        {
          "description": "Collapse multiple log events into a single event based on a set of conditions and merge strategies.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::reduce::config::ReduceConfig",
              "description": "Configuration for the `reduce` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Collapse multiple log events into a single event based on a set of conditions and merge strategies.",
                  "const": "reduce"
                }
              }
            }
          ]
        },
        {
          "description": "Modify your observability data as it passes through your topology using Vector Remap Language (VRL).",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::remap::RemapConfig",
              "description": "Configuration for the `remap` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Modify your observability data as it passes through your topology using Vector Remap Language (VRL).",
                  "const": "remap"
                }
              }
            }
          ]
        },
        {
          "description": "Split a stream of events into multiple sub-streams based on user-supplied conditions.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::route::RouteConfig",
              "description": "Configuration for the `route` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Split a stream of events into multiple sub-streams based on user-supplied conditions.",
                  "const": "route"
                }
              }
            }
          ]
        },
        {
          "description": "Sample events from an event stream based on supplied criteria and at a configurable rate.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::sample::config::SampleConfig",
              "description": "Configuration for the `sample` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Sample events from an event stream based on supplied criteria and at a configurable rate.",
                  "const": "sample"
                }
              }
            }
          ]
        },
        {
          "description": "Limit the cardinality of tags on metrics events as a safeguard against cardinality explosion.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::tag_cardinality_limit::config::TagCardinalityLimitConfig",
              "description": "Configuration for the `tag_cardinality_limit` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Limit the cardinality of tags on metrics events as a safeguard against cardinality explosion.",
                  "const": "tag_cardinality_limit"
                }
              }
            }
          ]
        },
        {
          "description": "Rate limit logs passing through a topology.",
          "allOf": [
            {
              "$ref": "#/$defs/vector::transforms::throttle::ThrottleConfig",
              "description": "Configuration for the `throttle` transform."
            },
            {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "description": "Rate limit logs passing through a topology.",
                  "const": "throttle"
                }
              }
            }
          ]
        }
      ]
    },
    "vector::transforms::aggregate::AggregateConfig": {
      "description": "Configuration for the `aggregate` transform.",
      "type": "object",
      "properties": {
        "interval_ms": {
          "title": "The interval between flushes, in milliseconds.",
          "description": "During this time frame, metrics (beta) with the same series data (name, namespace, tags, and so on) are aggregated.",
          "default": 10000,
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "mode": {
          "title": "Function to use for aggregation.",
          "description": "Some of the functions may only function on incremental and some only on absolute metrics.",
          "default": "Auto",
          "oneOf": [
            {
              "description": "Default mode. Sums incremental metrics and uses the latest value for absolute metrics.",
              "const": "Auto"
            },
            {
              "description": "Sums incremental metrics, ignores absolute",
              "const": "Sum"
            },
            {
              "description": "Returns the latest value for absolute metrics, ignores incremental",
              "const": "Latest"
            },
            {
              "description": "Counts metrics for incremental and absolute metrics",
              "const": "Count"
            },
            {
              "description": "Returns difference between latest value for absolute, ignores incremental",
              "const": "Diff"
            },
            {
              "description": "Max value of absolute metric, ignores incremental",
              "const": "Max"
            },
            {
              "description": "Min value of absolute metric, ignores incremental",
              "const": "Min"
            },
            {
              "description": "Mean value of absolute metric, ignores incremental",
              "const": "Mean"
            },
            {
              "description": "Stdev value of absolute metric, ignores incremental",
              "const": "Stdev"
            }
          ]
        }
      }
    },
    "vector::transforms::aws_ec2_metadata::Ec2Metadata": {
      "description": "Configuration for the `aws_ec2_metadata` transform.",
      "type": "object",
      "properties": {
        "endpoint": {
          "description": "Overrides the default EC2 metadata endpoint.",
          "default": "http://169.254.169.254",
          "type": "string"
        },
        "fields": {
          "description": "A list of metadata fields to include in each transformed event.",
          "default": [
            "ami-id",
            "availability-zone",
            "instance-id",
            "instance-type",
            "local-hostname",
            "local-ipv4",
            "public-hostname",
            "public-ipv4",
            "region",
            "subnet-id",
            "vpc-id",
            "role-name"
          ],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "namespace": {
          "$ref": "#/$defs/core::option::Option%3Cvector_lookup::lookup_v2::optional_path::OptionalTargetPath%3E",
          "description": "Sets a prefix for all event fields added by the transform."
        },
        "proxy": {
          "$ref": "#/$defs/vector_core::config::proxy::ProxyConfig",
          "title": "Proxy configuration.",
          "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
          "default": {}
        },
        "refresh_interval_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The interval between querying for updated metadata, in seconds.",
          "default": 10
        },
        "refresh_timeout_secs": {
          "$ref": "#/$defs/serde_with::DurationSeconds",
          "description": "The timeout for querying the EC2 metadata endpoint, in seconds.",
          "default": 1
        },
        "required": {
          "description": "Requires the transform to be able to successfully query the EC2 metadata before starting to process the data.",
          "default": true,
          "type": "boolean"
        },
        "tags": {
          "description": "A list of instance tags to include in each transformed event.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "vector::transforms::dedupe::config::DedupeConfig": {
      "description": "Configuration for the `dedupe` transform.",
      "type": "object",
      "properties": {
        "cache": {
          "description": "Caching configuration for deduplication.",
          "default": {
            "num_events": 5000
          },
          "type": "object",
          "required": [
            "num_events"
          ],
          "properties": {
            "num_events": {
              "description": "Number of events to cache and use for comparing incoming events to previously seen events.",
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 1.0
            }
          }
        },
        "fields": {
          "title": "Options to control what fields to match against.",
          "description": "When no field matching configuration is specified, events are matched using the `timestamp`,\n`host`, and `message` fields from an event. The specific field names used are those set in\nthe global [`log schema`][global_log_schema] configuration.\n\n[global_log_schema]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema>",
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "title": "Options to control what fields to match against.",
              "description": "When no field matching configuration is specified, events are matched using the `timestamp`,\n`host`, and `message` fields from an event. The specific field names used are those set in\nthe global [`log schema`][global_log_schema] configuration.\n\n[global_log_schema]: <https://vector.dev/docs/reference/configuration/global-options/#log_schema>",
              "oneOf": [
                {
                  "description": "Matches events using only the specified fields.",
                  "type": "object",
                  "required": [
                    "match"
                  ],
                  "properties": {
                    "match": {
                      "description": "A wrapper around `OwnedTargetPath` that allows it to be used in Vector config\nwith prefix default to `PathPrefix::Event`",
                      "type": "array",
                      "items": {
                        "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath"
                      }
                    }
                  }
                },
                {
                  "description": "Matches events using all fields except for the ignored ones.",
                  "type": "object",
                  "required": [
                    "ignore"
                  ],
                  "properties": {
                    "ignore": {
                      "description": "A wrapper around `OwnedTargetPath` that allows it to be used in Vector config\nwith prefix default to `PathPrefix::Event`",
                      "type": "array",
                      "items": {
                        "$ref": "#/$defs/vector_lookup::lookup_v2::ConfigTargetPath"
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
      }
    },
    "vector::transforms::exclusive_route::config::ExclusiveRouteConfig": {
      "description": "Configuration for the `route` transform.",
      "type": "object",
      "required": [
        "routes"
      ],
      "properties": {
        "routes": {
          "description": "An array of named routes. The route names are expected to be unique.",
          "type": "array",
          "items": {
            "description": "Individual route configuration.",
            "type": "object",
            "required": [
              "condition",
              "name"
            ],
            "properties": {
              "condition": {
                "$ref": "#/$defs/vector::conditions::AnyCondition",
                "description": "Each condition represents a filter which is applied to each event."
              },
              "name": {
                "title": "The name of the route is also the name of the transform port.",
                "description": "The `_unmatched` name is reserved and thus cannot be used as route ID.\n\nEach route can then be referenced as an input by other components with the name\n `<transform_name>.<name>`. If an event doesn’t match any route,\nit is sent to the `<transform_name>._unmatched` output.",
                "type": "string"
              }
            }
          }
        }
      }
    },
    "vector::transforms::filter::FilterConfig": {
      "description": "Configuration for the `filter` transform.",
      "type": "object",
      "required": [
        "condition"
      ],
      "properties": {
        "condition": {
          "$ref": "#/$defs/vector::conditions::AnyCondition",
          "title": "The condition that every input event is matched against.",
          "description": "If an event is matched by the condition, it is forwarded. Otherwise, the event is dropped."
        }
      }
    },
    "vector::transforms::log_to_metric::LogToMetricConfig": {
      "description": "Configuration for the `log_to_metric` transform.",
      "type": "object",
      "required": [
        "metrics"
      ],
      "properties": {
        "all_metrics": {
          "title": "Setting this flag changes the behavior of this transformation.<br />\n<p>Notably the `metrics` field will be ignored.</p>\n<p>All incoming events will be processed and if possible they will be converted to log events.\nOtherwise, only items specified in the 'metrics' field will be processed.</p>\n<pre class=\"chroma\"><code class=\"language-toml\" data-lang=\"toml\">use serde_json::json;\nlet json_event = json!({\n    \"counter\": {\n        \"value\": 10.0\n    },\n    \"kind\": \"incremental\",\n    \"name\": \"test.transform.counter\",\n    \"tags\": {\n        \"env\": \"test_env\",\n        \"host\": \"localhost\"\n    }\n});\n</code></pre>",
          "description": "This is an example JSON representation of a counter with the following properties:\n\n- `counter`: An object with a single property `value` representing the counter value, in this case, `10.0`).\n- `kind`: A string indicating the kind of counter, in this case, \"incremental\".\n- `name`: A string representing the name of the counter, here set to \"test.transform.counter\".\n- `tags`: An object containing additional tags such as \"env\" and \"host\".\n\nObjects that can be processed include counter, histogram, gauge, set and summary.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "metrics": {
          "description": "A list of metrics to generate.",
          "type": "array",
          "items": {
            "description": "Specification of a metric derived from a log event.",
            "allOf": [
              {
                "type": "object",
                "required": [
                  "field"
                ],
                "properties": {
                  "field": {
                    "$ref": "#/$defs/vector::template::Template",
                    "description": "Name of the field in the event to generate the metric."
                  },
                  "name": {
                    "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
                    "title": "Overrides the name of the counter.",
                    "description": "If not specified, `field` is used as the name of the metric."
                  },
                  "namespace": {
                    "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
                    "description": "Sets the namespace for the metric."
                  },
                  "tags": {
                    "title": "Tags to apply to the metric.",
                    "description": "Both keys and values can be templated, allowing you to attach dynamic tags to events.",
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": {
                      "title": "Specification of the value of a created tag.",
                      "description": "This may be a single value, a `null` for a bare tag, or an array of either.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
                          "description": "A single tag value."
                        },
                        {
                          "description": "An array of values to give to the same tag name.",
                          "type": "array",
                          "items": {
                            "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E"
                          }
                        }
                      ]
                    }
                  }
                }
              },
              {
                "description": "Specification of the type of an individual metric, and any associated data.",
                "oneOf": [
                  {
                    "description": "A counter.",
                    "allOf": [
                      {
                        "description": "Specification of a counter derived from a log event.",
                        "type": "object",
                        "properties": {
                          "increment_by_value": {
                            "description": "Increments the counter by the value in `field`, instead of only by `1`.",
                            "default": false,
                            "type": "boolean"
                          },
                          "kind": {
                            "$ref": "#/$defs/vector_core::event::metric::MetricKind",
                            "title": "Metric kind.",
                            "description": "Metrics can be either absolute or incremental. Absolute metrics represent a sort of \"last write wins\" scenario,\nwhere the latest absolute value seen is meant to be the actual metric value.  In contrast, and perhaps intuitively,\nincremental metrics are meant to be additive, such that we don't know what total value of the metric is, but we know\nthat we'll be adding or subtracting the given value from it.\n\nGenerally speaking, most metrics storage systems deal with incremental updates. A notable exception is Prometheus,\nwhich deals with, and expects, absolute values from clients.",
                            "default": "incremental"
                          }
                        }
                      },
                      {
                        "type": "object",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "description": "A counter.",
                            "const": "counter"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "description": "A histogram.",
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "A histogram.",
                        "const": "histogram"
                      }
                    }
                  },
                  {
                    "description": "A gauge.",
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "A gauge.",
                        "const": "gauge"
                      }
                    }
                  },
                  {
                    "description": "A set.",
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "A set.",
                        "const": "set"
                      }
                    }
                  },
                  {
                    "description": "A summary.",
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "description": "A summary.",
                        "const": "summary"
                      }
                    }
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "vector::transforms::lua::LuaConfig": {
      "description": "Configuration for the `lua` transform.",
      "oneOf": [
        {
          "description": "Configuration for version one.",
          "allOf": [
            {
              "type": "object",
              "properties": {
                "version": {
                  "title": "Transform API version.",
                  "description": "Specifying this version ensures that backward compatibility is not broken.",
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "description": "Marker type for the version one of the configuration for the `lua` transform.",
                      "oneOf": [
                        {
                          "title": "Lua transform API version 1.",
                          "description": "This version is deprecated and will be removed in a future version.",
                          "const": "1"
                        }
                      ]
                    }
                  ]
                }
              }
            },
            {
              "description": "Configuration for version one of the `lua` transform.",
              "type": "object",
              "required": [
                "source"
              ],
              "properties": {
                "search_dirs": {
                  "title": "A list of directories to search when loading a Lua file via the `require` function.",
                  "description": "If not specified, the modules are looked up in the configuration directories.",
                  "default": [],
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "source": {
                  "description": "The Lua program to execute for each event.",
                  "type": "string"
                }
              }
            }
          ]
        },
        {
          "description": "Configuration for version two.",
          "allOf": [
            {
              "type": "object",
              "required": [
                "version"
              ],
              "properties": {
                "version": {
                  "title": "Transform API version.",
                  "description": "Specifying this version ensures that backward compatibility is not broken.",
                  "oneOf": [
                    {
                      "description": "Lua transform API version 2.",
                      "const": "2"
                    }
                  ]
                }
              }
            },
            {
              "description": "Configuration for the version two of the `lua` transform.",
              "type": "object",
              "required": [
                "hooks"
              ],
              "properties": {
                "hooks": {
                  "title": "Lifecycle hooks.",
                  "description": "These hooks can be set to perform additional processing during the lifecycle of the transform.",
                  "type": "object",
                  "required": [
                    "process"
                  ],
                  "properties": {
                    "init": {
                      "title": "The function called when the first event comes in, before `hooks.process` is called.",
                      "description": "It can produce new events using the `emit` function.\n\nThis can either be inline Lua that defines a closure to use, or the name of the Lua function to call. In both\ncases, the closure/function takes a single parameter, `emit`, which is a reference to a function for emitting events.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "process": {
                      "title": "The function called for each incoming event.",
                      "description": "It can produce new events using the `emit` function.\n\nThis can either be inline Lua that defines a closure to use, or the name of the Lua function to call. In both\ncases, the closure/function takes two parameters. The first parameter, `event`, is the event being processed,\nwhile the second parameter, `emit`, is a reference to a function for emitting events.",
                      "type": "string"
                    },
                    "shutdown": {
                      "title": "The function called when the transform is stopped.",
                      "description": "It can produce new events using the `emit` function.\n\nThis can either be inline Lua that defines a closure to use, or the name of the Lua function to call. In both\ncases, the closure/function takes a single parameter, `emit`, which is a reference to a function for emitting events.",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "metric_tag_values": {
                  "$ref": "#/$defs/codecs::MetricTagValues",
                  "title": "When set to `single`, metric tag values are exposed as single strings, the\nsame as they were before this config option. Tags with multiple values show the last assigned value, and null values\nare ignored.",
                  "description": "When set to `full`, all metric tags are exposed as arrays of either string or null\nvalues.",
                  "default": "single"
                },
                "search_dirs": {
                  "title": "A list of directories to search when loading a Lua file via the `require` function.",
                  "description": "If not specified, the modules are looked up in the configuration directories.",
                  "default": [],
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/stdlib::PathBuf"
                  }
                },
                "source": {
                  "title": "The Lua program to initialize the transform with.",
                  "description": "The program can be used to import external dependencies, as well as define the functions\nused for the various lifecycle hooks. However, it's not strictly required, as the lifecycle\nhooks can be configured directly with inline Lua source for each respective hook.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "timers": {
                  "description": "A list of timers which should be configured and executed periodically.",
                  "default": [],
                  "type": "array",
                  "items": {
                    "description": "A Lua timer.",
                    "type": "object",
                    "required": [
                      "handler",
                      "interval_seconds"
                    ],
                    "properties": {
                      "handler": {
                        "title": "The handler function which is called when the timer ticks.",
                        "description": "It can produce new events using the `emit` function.\n\nThis can either be inline Lua that defines a closure to use, or the name of the Lua function\nto call. In both cases, the closure/function takes a single parameter, `emit`, which is a\nreference to a function for emitting events.",
                        "type": "string"
                      },
                      "interval_seconds": {
                        "$ref": "#/$defs/serde_with::DurationSeconds",
                        "description": "The interval to execute the handler, in seconds."
                      }
                    }
                  }
                }
              }
            }
          ]
        }
      ]
    },
    "vector::transforms::metric_to_log::MetricToLogConfig": {
      "description": "Configuration for the `metric_to_log` transform.",
      "type": "object",
      "properties": {
        "host_tag": {
          "title": "Name of the tag in the metric to use for the source host.",
          "description": "If present, the value of the tag is set on the generated log event in the `host` field,\nwhere the field key uses the [global `host_key` option][global_log_schema_host_key].\n\n[global_log_schema_host_key]: <https://vector.dev/docs/reference/configuration//global-options#log_schema.host_key>",
          "type": [
            "string",
            "null"
          ]
        },
        "log_namespace": {
          "description": "The namespace to use for logs. This overrides the global setting.",
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "metric_tag_values": {
          "$ref": "#/$defs/codecs::MetricTagValues",
          "title": "Controls how metric tag values are encoded.",
          "description": "When set to `single`, only the last non-bare value of tags are displayed with the\nmetric.  When set to `full`, all metric tags are exposed as separate assignments as\ndescribed by [the `native_json` codec][vector_native_json].\n\n[vector_native_json]: <https://github.com/vectordotdev/vector/blob/master/lib/codecs/tests/data/native_encoding/schema.cue>",
          "default": "single"
        },
        "timezone": {
          "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
          "title": "The name of the time zone to apply to timestamp conversions that do not contain an explicit\ntime zone.",
          "description": "This overrides the [global `timezone`][global_timezone] option. The time zone name may be\nany name in the [TZ database][tz_database] or `local` to indicate system local time.\n\n[global_timezone]: <https://vector.dev/docs/reference/configuration//global-options#timezone>\n[tz_database]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>"
        }
      }
    },
    "vector::transforms::reduce::config::ReduceConfig": {
      "description": "Configuration for the `reduce` transform.",
      "type": "object",
      "properties": {
        "end_every_period_ms": {
          "description": "If supplied, every time this interval elapses for a given grouping, the reduced value\nfor that grouping is flushed. Checked every flush_period_ms.",
          "default": null,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "ends_when": {
          "$ref": "#/$defs/core::option::Option%3Cvector::conditions::AnyCondition%3E",
          "title": "A condition used to distinguish the final event of a transaction.",
          "description": "If this condition resolves to `true` for an event, the current transaction is immediately\nflushed with this event."
        },
        "expire_after_ms": {
          "$ref": "#/$defs/serde_with::DurationMilliSeconds",
          "description": "The maximum period of time to wait after the last event is received, in milliseconds, before\na combined event should be considered complete.",
          "default": 30000
        },
        "flush_period_ms": {
          "$ref": "#/$defs/serde_with::DurationMilliSeconds",
          "description": "The interval to check for and flush any expired events, in milliseconds.",
          "default": 1000
        },
        "group_by": {
          "title": "An ordered list of fields by which to group events.",
          "description": "Each group with matching values for the specified keys is reduced independently, allowing\nyou to keep independent event streams separate. When no fields are specified, all events\nare combined in a single group.\n\nFor example, if `group_by = [\"host\", \"region\"]`, then all incoming events that have the same\nhost and region are grouped together before being reduced.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_events": {
          "description": "The maximum number of events to group together.",
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9007199254740990.0,
          "minimum": 1.0
        },
        "merge_strategies": {
          "title": "A map of field names to custom merge strategies.",
          "description": "For each field specified, the given strategy is used for combining events rather than\nthe default behavior.\n\nThe default behavior is as follows:\n\n- The first value of a string field is kept and subsequent values are discarded.\n- For timestamp fields the first is kept and a new field `[field-name]_end` is added with\n  the last received timestamp value.\n- Numeric values are summed.\n- For nested paths, the field value is retrieved and then reduced using the default strategies mentioned above (unless explicitly specified otherwise).",
          "default": {},
          "type": "object",
          "additionalProperties": {
            "description": "Strategies for merging events.",
            "oneOf": [
              {
                "description": "Discard all but the first value found.",
                "const": "discard"
              },
              {
                "title": "Discard all but the last value found.",
                "description": "Works as a way to coalesce by not retaining `null`.",
                "const": "retain"
              },
              {
                "description": "Sum all numeric values.",
                "const": "sum"
              },
              {
                "description": "Keep the maximum numeric value seen.",
                "const": "max"
              },
              {
                "description": "Keep the minimum numeric value seen.",
                "const": "min"
              },
              {
                "description": "Append each value to an array.",
                "const": "array"
              },
              {
                "description": "Concatenate each string value, delimited with a space.",
                "const": "concat"
              },
              {
                "description": "Concatenate each string value, delimited with a newline.",
                "const": "concat_newline"
              },
              {
                "description": "Concatenate each string, without a delimiter.",
                "const": "concat_raw"
              },
              {
                "description": "Keep the shortest array seen.",
                "const": "shortest_array"
              },
              {
                "description": "Keep the longest array seen.",
                "const": "longest_array"
              },
              {
                "description": "Create a flattened array of all unique values.",
                "const": "flat_unique"
              }
            ]
          }
        },
        "starts_when": {
          "$ref": "#/$defs/core::option::Option%3Cvector::conditions::AnyCondition%3E",
          "title": "A condition used to distinguish the first event of a transaction.",
          "description": "If this condition resolves to `true` for an event, the previous transaction is flushed\n(without this event) and a new transaction is started."
        }
      }
    },
    "vector::transforms::remap::RemapConfig": {
      "description": "Configuration for the `remap` transform.",
      "type": "object",
      "properties": {
        "drop_on_abort": {
          "title": "Drops any event that is manually aborted during processing.",
          "description": "If a VRL program is manually aborted (using [`abort`][vrl_docs_abort]) when\nprocessing an event, this option controls whether the original, unmodified event is sent\ndownstream without any modifications or if it is dropped.\n\nAdditionally, dropped events can potentially be diverted to a specially-named output for\nfurther logging and analysis by setting `reroute_dropped`.\n\n[vrl_docs_abort]: <https://vector.dev/docs/reference/vrl/expressions/#abort>",
          "default": true,
          "type": "boolean"
        },
        "drop_on_error": {
          "title": "Drops any event that encounters an error during processing.",
          "description": "Normally, if a VRL program encounters an error when processing an event, the original,\nunmodified event is sent downstream. In some cases, you may not want to send the event\nany further, such as if certain transformation or enrichment is strictly required. Setting\n`drop_on_error` to `true` allows you to ensure these events do not get processed any\nfurther.\n\nAdditionally, dropped events can potentially be diverted to a specially named output for\nfurther logging and analysis by setting `reroute_dropped`.",
          "default": false,
          "type": "boolean"
        },
        "file": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "File path to the [Vector Remap Language][vrl] (VRL) program to execute for each event.",
          "description": "If a relative path is provided, its root is the current working directory.\n\nRequired if `source` is missing.\n\n[vrl]: <https://vector.dev/docs/reference/vrl>"
        },
        "files": {
          "title": "File paths to the [Vector Remap Language][vrl] (VRL) programs to execute for each event.",
          "description": "If a relative path is provided, its root is the current working directory.\n\nRequired if `source` or `file` are missing.\n\n[vrl]: <https://vector.dev/docs/reference/vrl>",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/stdlib::PathBuf"
          }
        },
        "metric_tag_values": {
          "$ref": "#/$defs/codecs::MetricTagValues",
          "title": "When set to `single`, metric tag values are exposed as single strings, the\nsame as they were before this config option. Tags with multiple values show the last assigned value, and null values\nare ignored.",
          "description": "When set to `full`, all metric tags are exposed as arrays of either string or null\nvalues.",
          "default": "single"
        },
        "reroute_dropped": {
          "title": "Reroutes dropped events to a named output instead of halting processing on them.",
          "description": "When using `drop_on_error` or `drop_on_abort`, events that are \"dropped\" are processed no\nfurther. In some cases, it may be desirable to keep the events around for further analysis,\ndebugging, or retrying.\n\nIn these cases, `reroute_dropped` can be set to `true` which forwards the original event\nto a specially-named output, `dropped`. The original event is annotated with additional\nfields describing why the event was dropped.",
          "default": false,
          "type": "boolean"
        },
        "runtime": {
          "description": "The runtime to use for executing VRL code.",
          "default": "ast",
          "type": "string"
        },
        "source": {
          "title": "The [Vector Remap Language][vrl] (VRL) program to execute for each event.",
          "description": "Required if `file` is missing.\n\n[vrl]: <https://vector.dev/docs/reference/vrl>",
          "type": [
            "string",
            "null"
          ]
        },
        "timezone": {
          "$ref": "#/$defs/core::option::Option%3Cvrl::compiler::datetime::TimeZone%3E",
          "title": "The name of the timezone to apply to timestamp conversions that do not contain an explicit\ntime zone.",
          "description": "This overrides the [global `timezone`][global_timezone] option. The time zone name may be\nany name in the [TZ database][tz_database], or `local` to indicate system local time.\n\n[global_timezone]: <https://vector.dev/docs/reference/configuration//global-options#timezone>\n[tz_database]: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>",
          "default": null
        }
      }
    },
    "vector::transforms::route::RouteConfig": {
      "description": "Configuration for the `route` transform.",
      "type": "object",
      "properties": {
        "reroute_unmatched": {
          "title": "Reroutes unmatched events to a named output instead of silently discarding them.",
          "description": "Normally, if an event doesn't match any defined route, it is sent to the `<transform_name>._unmatched`\noutput for further processing. In some cases, you may want to simply discard unmatched events and not\nprocess them any further.\n\nIn these cases, `reroute_unmatched` can be set to `false` to disable the `<transform_name>._unmatched`\noutput and instead silently discard any unmatched events.",
          "default": true,
          "type": "boolean"
        },
        "route": {
          "title": "A map from route identifiers to logical conditions.\nEach condition represents a filter which is applied to each event.",
          "description": "The following identifiers are reserved output names and thus cannot be used as route IDs:\n- `_unmatched`\n- `_default`\n\nEach route can then be referenced as an input by other components with the name\n`<transform_name>.<route_id>`. If an event doesn’t match any route, and if `reroute_unmatched`\nis set to `true` (the default), it is sent to the `<transform_name>._unmatched` output.\nOtherwise, the unmatched event is instead silently discarded.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/vector::conditions::AnyCondition"
          }
        }
      }
    },
    "vector::transforms::sample::config::SampleConfig": {
      "description": "Configuration for the `sample` transform.",
      "type": "object",
      "required": [
        "rate"
      ],
      "properties": {
        "exclude": {
          "$ref": "#/$defs/core::option::Option%3Cvector::conditions::AnyCondition%3E",
          "description": "A logical condition used to exclude events from sampling."
        },
        "group_by": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The value to group events into separate buckets to be sampled independently.",
          "description": "If left unspecified, or if the event doesn't have `group_by`, then the event is not\nsampled separately."
        },
        "key_field": {
          "title": "The name of the field whose value is hashed to determine if the event should be\nsampled.",
          "description": "Each unique value for the key creates a bucket of related events to be sampled together\nand the rate is applied to the buckets themselves to sample `1/N` buckets.  The overall rate\nof sampling may differ from the configured one if values in the field are not uniformly\ndistributed. If left unspecified, or if the event doesn’t have `key_field`, then the\nevent is sampled independently.\n\nThis can be useful to, for example, ensure that all logs for a given transaction are\nsampled together, but that overall `1/N` transactions are sampled.",
          "type": [
            "string",
            "null"
          ]
        },
        "rate": {
          "title": "The rate at which events are forwarded, expressed as `1/N`.",
          "description": "For example, `rate = 1500` means 1 out of every 1500 events are forwarded and the rest are\ndropped.",
          "type": "integer",
          "maximum": 9007199254740990.0,
          "minimum": 0.0
        },
        "sample_rate_key": {
          "$ref": "#/$defs/vector_lookup::lookup_v2::optional_path::OptionalValuePath",
          "description": "The event key in which the sample rate is stored. If set to an empty string, the sample rate will not be added to the event.",
          "default": "sample_rate"
        }
      }
    },
    "vector::transforms::tag_cardinality_limit::config::TagCardinalityLimitConfig": {
      "description": "Configuration for the `tag_cardinality_limit` transform.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "limit_exceeded_action": {
              "description": "Possible actions to take when an event arrives that would exceed the cardinality limit for one\nor more of its tags.",
              "default": "drop_tag",
              "oneOf": [
                {
                  "description": "Drop the tag(s) that would exceed the configured limit.",
                  "const": "drop_tag"
                },
                {
                  "description": "Drop the entire event itself.",
                  "const": "drop_event"
                }
              ]
            },
            "value_limit": {
              "description": "How many distinct values to accept for any given key.",
              "default": 500,
              "type": "integer",
              "maximum": 9007199254740990.0,
              "minimum": 0.0
            }
          }
        },
        {
          "description": "Controls the approach taken for tracking tag cardinality.",
          "oneOf": [
            {
              "title": "Tracks cardinality exactly.",
              "description": "This mode has higher memory requirements than `probabilistic`, but never falsely outputs\nmetrics with new tags after the limit has been hit.",
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "title": "Tracks cardinality exactly.",
                  "description": "This mode has higher memory requirements than `probabilistic`, but never falsely outputs\nmetrics with new tags after the limit has been hit.",
                  "const": "exact"
                }
              }
            },
            {
              "title": "Tracks cardinality probabilistically.",
              "description": "This mode has lower memory requirements than `exact`, but may occasionally allow metric\nevents to pass through the transform even when they contain new tags that exceed the\nconfigured limit. The rate at which this happens can be controlled by changing the value of\n`cache_size_per_key`.",
              "allOf": [
                {
                  "description": "Bloom filter configuration in probabilistic mode.",
                  "type": "object",
                  "properties": {
                    "cache_size_per_key": {
                      "title": "The size of the cache for detecting duplicate tags, in bytes.",
                      "description": "The larger the cache size, the less likely it is to have a false positive, or a case where\nwe allow a new value for tag even after we have reached the configured limits.",
                      "default": 5120,
                      "type": "integer",
                      "maximum": 9007199254740990.0,
                      "minimum": 0.0
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "title": "Tracks cardinality probabilistically.",
                      "description": "This mode has lower memory requirements than `exact`, but may occasionally allow metric\nevents to pass through the transform even when they contain new tags that exceed the\nconfigured limit. The rate at which this happens can be controlled by changing the value of\n`cache_size_per_key`.",
                      "const": "probabilistic"
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "vector::transforms::throttle::ThrottleConfig": {
      "description": "Configuration for the `throttle` transform.",
      "type": "object",
      "required": [
        "threshold",
        "window_secs"
      ],
      "properties": {
        "exclude": {
          "$ref": "#/$defs/core::option::Option%3Cvector::conditions::AnyCondition%3E",
          "description": "A logical condition used to exclude events from sampling."
        },
        "internal_metrics": {
          "description": "Configuration of internal metrics for the Throttle transform.",
          "default": {
            "emit_events_discarded_per_key": false
          },
          "type": "object",
          "properties": {
            "emit_events_discarded_per_key": {
              "title": "Whether or not to emit the `events_discarded_total` internal metric with the `key` tag.",
              "description": "If true, the counter will be incremented for each discarded event, including the key value\nassociated with the discarded event. If false, the counter will not be emitted. Instead, the\nnumber of discarded events can be seen through the `component_discarded_events_total` internal\nmetric.\n\nNote that this defaults to false because the `key` tag has potentially unbounded cardinality.\nOnly set this to true if you know that the number of unique keys is bounded.",
              "default": false,
              "type": "boolean"
            }
          }
        },
        "key_field": {
          "$ref": "#/$defs/core::option::Option%3Cvector::template::Template%3E",
          "title": "The value to group events into separate buckets to be rate limited independently.",
          "description": "If left unspecified, or if the event doesn't have `key_field`, then the event is not rate\nlimited separately."
        },
        "threshold": {
          "title": "The number of events allowed for a given bucket per configured `window_secs`.",
          "description": "Each unique key has its own `threshold`.",
          "type": "integer",
          "maximum": 4294967295.0,
          "minimum": 0.0
        },
        "window_secs": {
          "$ref": "#/$defs/serde_with::DurationFractionalSeconds",
          "description": "The time window in which the configured `threshold` is applied, in seconds."
        }
      }
    },
    "vector_common::id::Inputs<alloc::string::String>": {
      "title": "A list of upstream [source][sources] or [transform][transforms] IDs.",
      "description": "Wildcards (`*`) are supported.\n\nSee [configuration][configuration] for more info.\n\n[sources]: <https://vector.dev/docs/reference/configuration/sources/>\n[transforms]: <https://vector.dev/docs/reference/configuration/transforms/>\n[configuration]: <https://vector.dev/docs/reference/configuration/>",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "vector_common::sensitive_string::SensitiveString": {
      "description": "Wrapper for sensitive strings containing credentials",
      "type": "string"
    },
    "vector_core::config::AcknowledgementsConfig": {
      "title": "Controls how acknowledgements are handled for this sink.",
      "description": "See [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
      "type": "object",
      "properties": {
        "enabled": {
          "title": "Whether or not end-to-end acknowledgements are enabled.",
          "description": "When enabled for a sink, any source connected to that sink, where the source supports\nend-to-end acknowledgements as well, waits for events to be acknowledged by **all\nconnected** sinks before acknowledging them at the source.\n\nEnabling or disabling acknowledgements at the sink level takes precedence over any global\n[`acknowledgements`][global_acks] configuration.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>",
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "vector_core::config::SourceAcknowledgementsConfig": {
      "title": "Controls how acknowledgements are handled by this source.",
      "description": "This setting is **deprecated** in favor of enabling `acknowledgements` at the [global][global_acks] or sink level.\n\nEnabling or disabling acknowledgements at the source level has **no effect** on acknowledgement behavior.\n\nSee [End-to-end Acknowledgements][e2e_acks] for more information on how event acknowledgement is handled.\n\n[global_acks]: <https://vector.dev/docs/reference/configuration/global-options/#acknowledgements>\n[e2e_acks]: <https://vector.dev/docs/about/under-the-hood/architecture/end-to-end-acknowledgements/>",
      "deprecated": true,
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Whether or not end-to-end acknowledgements are enabled for this source.",
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "vector_core::config::proxy::ProxyConfig": {
      "title": "Proxy configuration.",
      "description": "Configure to proxy traffic through an HTTP(S) proxy when making external requests.\n\nSimilar to common proxy configuration convention, you can set different proxies\nto use based on the type of traffic being proxied. You can also set specific hosts that\nshould not be proxied.",
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Enables proxying support.",
          "default": true,
          "type": "boolean"
        },
        "http": {
          "title": "Proxy endpoint to use when proxying HTTP traffic.",
          "description": "Must be a valid URI string.",
          "default": null,
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "https": {
          "title": "Proxy endpoint to use when proxying HTTPS traffic.",
          "description": "Must be a valid URI string.",
          "default": null,
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "no_proxy": {
          "title": "A list of hosts to avoid proxying.",
          "description": "Multiple patterns are allowed:\n\n| Pattern             | Example match                                                               |\n| ------------------- | --------------------------------------------------------------------------- |\n| Domain names        | `example.com` matches requests to `example.com`                     |\n| Wildcard domains    | `.example.com` matches requests to `example.com` and its subdomains |\n| IP addresses        | `127.0.0.1` matches requests to `127.0.0.1`                         |\n| [CIDR][cidr] blocks | `192.168.0.0/16` matches requests to any IP addresses in this range     |\n| Splat               | `*` matches all hosts                                                   |\n\n[cidr]: <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "vector_core::event::metric::MetricKind": {
      "title": "Metric kind.",
      "description": "Metrics can be either absolute or incremental. Absolute metrics represent a sort of \"last write wins\" scenario,\nwhere the latest absolute value seen is meant to be the actual metric value.  In contrast, and perhaps intuitively,\nincremental metrics are meant to be additive, such that we don't know what total value of the metric is, but we know\nthat we'll be adding or subtracting the given value from it.\n\nGenerally speaking, most metrics storage systems deal with incremental updates. A notable exception is Prometheus,\nwhich deals with, and expects, absolute values from clients.",
      "oneOf": [
        {
          "description": "Incremental metric.",
          "const": "incremental"
        },
        {
          "description": "Absolute metric.",
          "const": "absolute"
        }
      ]
    },
    "vector_core::event::metric::value::MetricValue": {
      "description": "Metric value.\nContainer for the actual value of a metric.",
      "oneOf": [
        {
          "description": "A cumulative numerical value that can only increase or be reset to zero.",
          "type": "object",
          "required": [
            "counter"
          ],
          "properties": {
            "counter": {
              "type": "object",
              "required": [
                "value"
              ],
              "properties": {
                "value": {
                  "description": "The value of the counter.",
                  "type": "number",
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "description": "A single numerical value that can arbitrarily go up and down.",
          "type": "object",
          "required": [
            "gauge"
          ],
          "properties": {
            "gauge": {
              "type": "object",
              "required": [
                "value"
              ],
              "properties": {
                "value": {
                  "description": "The value of the gauge.",
                  "type": "number",
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "description": "A set of (unordered) unique values for a key.",
          "type": "object",
          "required": [
            "set"
          ],
          "properties": {
            "set": {
              "type": "object",
              "required": [
                "values"
              ],
              "properties": {
                "values": {
                  "description": "The values in the set.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                }
              }
            }
          }
        },
        {
          "description": "A set of observations without any aggregation or sampling.",
          "type": "object",
          "required": [
            "distribution"
          ],
          "properties": {
            "distribution": {
              "type": "object",
              "required": [
                "samples",
                "statistic"
              ],
              "properties": {
                "samples": {
                  "description": "The observed values within this distribution.",
                  "type": "array",
                  "items": {
                    "description": "A single observation.",
                    "type": "object",
                    "required": [
                      "rate",
                      "value"
                    ],
                    "properties": {
                      "rate": {
                        "description": "The rate at which the value was observed.",
                        "type": "integer",
                        "maximum": 4294967295.0,
                        "minimum": 0.0
                      },
                      "value": {
                        "description": "The value of the observation.",
                        "type": "number",
                        "maximum": 9007199254740990.0,
                        "minimum": -9007199254740990.0
                      }
                    }
                  }
                },
                "statistic": {
                  "description": "The type of statistics to derive for this distribution.",
                  "oneOf": [
                    {
                      "description": "A histogram representation.",
                      "const": "histogram"
                    },
                    {
                      "description": "Corresponds to Datadog's Distribution Metric\n<https://docs.datadoghq.com/developers/metrics/types/?tab=distribution#definition>",
                      "const": "summary"
                    }
                  ]
                }
              }
            }
          }
        },
        {
          "title": "A set of observations which are counted into buckets.",
          "description": "It also contains the total count of all observations and their sum to allow calculating the mean.",
          "type": "object",
          "required": [
            "aggregated_histogram"
          ],
          "properties": {
            "aggregated_histogram": {
              "type": "object",
              "required": [
                "buckets",
                "count",
                "sum"
              ],
              "properties": {
                "buckets": {
                  "title": "A histogram bucket.",
                  "description": "The buckets within this histogram.",
                  "type": "array",
                  "items": {
                    "title": "A histogram bucket.",
                    "description": "Histogram buckets represent the `count` of observations where the value of the observations does\nnot exceed the specified `upper_limit`.",
                    "type": "object",
                    "required": [
                      "count",
                      "upper_limit"
                    ],
                    "properties": {
                      "count": {
                        "description": "The number of values tracked in this bucket.",
                        "type": "integer",
                        "maximum": 9007199254740990.0,
                        "minimum": 0.0
                      },
                      "upper_limit": {
                        "description": "The upper limit of values in the bucket.",
                        "type": "number",
                        "maximum": 9007199254740990.0,
                        "minimum": -9007199254740990.0
                      }
                    }
                  }
                },
                "count": {
                  "description": "The total number of observations contained within this histogram.",
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "sum": {
                  "description": "The sum of all observations contained within this histogram.",
                  "type": "number",
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "title": "A set of observations which are represented by quantiles.",
          "description": "Each quantile contains the upper value of the quantile (0 <= φ <= 1). It also contains the total count of all\nobservations and their sum to allow calculating the mean.",
          "type": "object",
          "required": [
            "aggregated_summary"
          ],
          "properties": {
            "aggregated_summary": {
              "type": "object",
              "required": [
                "count",
                "quantiles",
                "sum"
              ],
              "properties": {
                "count": {
                  "description": "The total number of observations contained within this summary.",
                  "type": "integer",
                  "maximum": 9007199254740990.0,
                  "minimum": 0.0
                },
                "quantiles": {
                  "title": "A single quantile observation.",
                  "description": "The quantiles measured from this summary.",
                  "type": "array",
                  "items": {
                    "title": "A single quantile observation.",
                    "description": "Quantiles themselves are \"cut points dividing the range of a probability distribution into\ncontinuous intervals with equal probabilities\". [[1][quantiles_wikipedia]].\n\nWe use quantiles to measure the value along these probability distributions for representing\nclient-side aggregations of distributions, which represent a collection of observations over a\nspecific time window.\n\nIn general, we typically use the term \"quantile\" to represent the concept of _percentiles_,\nwhich deal with whole integers -- 0, 1, 2, .., 99, 100 -- even though quantiles are\nfloating-point numbers and can represent higher-precision cut points, such as 0.9999, or the\n99.99th percentile.\n\n[quantiles_wikipedia]: <https://en.wikipedia.org/wiki/Quantile>",
                    "type": "object",
                    "required": [
                      "quantile",
                      "value"
                    ],
                    "properties": {
                      "quantile": {
                        "title": "The value of the quantile.",
                        "description": "This value must be between 0.0 and 1.0, inclusive.",
                        "type": "number",
                        "maximum": 9007199254740990.0,
                        "minimum": -9007199254740990.0
                      },
                      "value": {
                        "description": "The estimated value of the given quantile within the probability distribution.",
                        "type": "number",
                        "maximum": 9007199254740990.0,
                        "minimum": -9007199254740990.0
                      }
                    }
                  }
                },
                "sum": {
                  "description": "The sum of all observations contained within this histogram.",
                  "type": "number",
                  "maximum": 9007199254740990.0,
                  "minimum": -9007199254740990.0
                }
              }
            }
          }
        },
        {
          "title": "A data structure that can answer questions about the cumulative distribution of the contained samples in\nspace-efficient way.",
          "description": "Sketches represent the data in a way that queries over it have bounded error guarantees without needing to hold\nevery single sample in memory. They are also, typically, able to be merged with other sketches of the same type\nsuch that client-side _and_ server-side aggregation can be accomplished without loss of accuracy in the queries.",
          "type": "object",
          "required": [
            "sketch"
          ],
          "properties": {
            "sketch": {
              "type": "object",
              "required": [
                "sketch"
              ],
              "properties": {
                "sketch": {
                  "description": "A generalized metrics sketch.",
                  "oneOf": [
                    {
                      "title": "[DDSketch][ddsketch] implementation based on the [Datadog Agent][ddagent].",
                      "description": "While DDSketch has open-source implementations based on the white paper, the version used in\nthe Datadog Agent itself is subtly different. This version is suitable for sending directly\nto Datadog's sketch ingest endpoint.\n\n[ddsketch]: <https://www.vldb.org/pvldb/vol12/p2195-masson.pdf>\n[ddagent]: <https://github.com/DataDog/datadog-agent>",
                      "type": "object",
                      "required": [
                        "AgentDDSketch"
                      ],
                      "properties": {
                        "AgentDDSketch": {
                          "title": "[DDSketch][ddsketch] implementation based on the [Datadog Agent][ddagent].",
                          "description": "This implementation is subtly different from the open-source implementations of `DDSketch`, as\nDatadog made some slight tweaks to configuration values and in-memory layout to optimize it for\ninsertion performance within the agent.\n\nWe've mimicked the agent version of `DDSketch` here in order to support a future where we can\ntake sketches shipped by the agent, handle them internally, merge them, and so on, without any\nloss of accuracy, eventually forwarding them to Datadog ourselves.\n\nAs such, this implementation is constrained in the same ways: the configuration parameters\ncannot be changed, the collapsing strategy is fixed, and we support a limited number of methods\nfor inserting into the sketch.\n\nImportantly, we have a special function, again taken from the agent version, to allow us to\ninterpolate histograms, specifically our own aggregated histograms, into a sketch so that we can\nemit useful default quantiles, rather than having to ship the buckets -- upper bound and count\n-- to a downstream system that might have no native way to do the same thing, basically\nproviding no value as they have no way to render useful data from them.\n\n[ddsketch]: <https://www.vldb.org/pvldb/vol12/p2195-masson.pdf>\n[ddagent]: <https://github.com/DataDog/datadog-agent>",
                          "type": "object",
                          "required": [
                            "avg",
                            "bins",
                            "count",
                            "max",
                            "min",
                            "sum"
                          ],
                          "properties": {
                            "avg": {
                              "description": "The average value of all observations within the sketch.",
                              "type": "number",
                              "maximum": 9007199254740990.0,
                              "minimum": -9007199254740990.0
                            },
                            "bins": {
                              "title": "A split representation of sketch bins.",
                              "description": "The bins within the sketch.",
                              "type": "object",
                              "required": [
                                "k",
                                "n"
                              ],
                              "properties": {
                                "k": {
                                  "description": "The bin keys.",
                                  "type": "array",
                                  "items": {
                                    "type": "integer",
                                    "maximum": 32767.0,
                                    "minimum": -32768.0
                                  }
                                },
                                "n": {
                                  "description": "The bin counts.",
                                  "type": "array",
                                  "items": {
                                    "type": "integer",
                                    "maximum": 65535.0,
                                    "minimum": 0.0
                                  }
                                }
                              }
                            },
                            "count": {
                              "description": "The number of observations within the sketch.",
                              "type": "integer",
                              "maximum": 4294967295.0,
                              "minimum": 0.0
                            },
                            "max": {
                              "description": "The maximum value of all observations within the sketch.",
                              "type": "number",
                              "maximum": 9007199254740990.0,
                              "minimum": -9007199254740990.0
                            },
                            "min": {
                              "description": "The minimum value of all observations within the sketch.",
                              "type": "number",
                              "maximum": 9007199254740990.0,
                              "minimum": -9007199254740990.0
                            },
                            "sum": {
                              "description": "The sum of all observations within the sketch.",
                              "type": "number",
                              "maximum": 9007199254740990.0,
                              "minimum": -9007199254740990.0
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      ]
    },
    "vector_core::tls::settings::TlsConfig": {
      "description": "TLS configuration.",
      "type": "object",
      "properties": {
        "alpn_protocols": {
          "title": "Sets the list of supported ALPN protocols.",
          "description": "Declare the supported ALPN protocols, which are used during negotiation with peer. They are prioritized in the order\nthat they are defined.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "ca_file": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "Absolute path to an additional CA certificate file.",
          "description": "The certificate must be in the DER or PEM (X.509) format. Additionally, the certificate can be provided as an inline string in PEM format."
        },
        "crt_file": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "Absolute path to a certificate file used to identify this server.",
          "description": "The certificate must be in DER, PEM (X.509), or PKCS#12 format. Additionally, the certificate can be provided as\nan inline string in PEM format.\n\nIf this is set, and is not a PKCS#12 archive, `key_file` must also be set."
        },
        "key_file": {
          "$ref": "#/$defs/core::option::Option%3Cstd::path::PathBuf%3E",
          "title": "Absolute path to a private key file used to identify this server.",
          "description": "The key must be in DER or PEM (PKCS#8) format. Additionally, the key can be provided as an inline string in PEM format."
        },
        "key_pass": {
          "title": "Passphrase used to unlock the encrypted key file.",
          "description": "This has no effect unless `key_file` is set.",
          "type": [
            "string",
            "null"
          ]
        },
        "server_name": {
          "title": "Server name to use when using Server Name Indication (SNI).",
          "description": "Only relevant for outgoing connections.",
          "type": [
            "string",
            "null"
          ]
        },
        "verify_certificate": {
          "title": "Enables certificate verification. For components that create a server, this requires that the\nclient connections have a valid client certificate. For components that initiate requests,\nthis validates that the upstream has a valid certificate.",
          "description": "If enabled, certificates must not be expired and must be issued by a trusted\nissuer. This verification operates in a hierarchical manner, checking that the leaf certificate (the\ncertificate presented by the client/server) is not only valid, but that the issuer of that certificate is also valid, and\nso on until the verification process reaches a root certificate.\n\nDo NOT set this to `false` unless you understand the risks of not verifying the validity of certificates.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "verify_hostname": {
          "title": "Enables hostname verification.",
          "description": "If enabled, the hostname used to connect to the remote host must be present in the TLS certificate presented by\nthe remote host, either as the Common Name or as an entry in the Subject Alternative Name extension.\n\nOnly relevant for outgoing connections.\n\nDo NOT set this to `false` unless you understand the risks of not verifying the remote hostname.",
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "vector_core::tls::settings::TlsEnableableConfig": {
      "description": "Configures the TLS options for incoming/outgoing connections.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "enabled": {
              "title": "Whether or not to require TLS for incoming or outgoing connections.",
              "description": "When enabled and used for incoming connections, an identity certificate is also required. See `tls.crt_file` for\nmore information.",
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        },
        {
          "$ref": "#/$defs/vector_core::tls::settings::TlsConfig",
          "description": "TLS configuration."
        }
      ]
    },
    "vector_lookup::lookup_v2::ConfigTargetPath": {
      "description": "A wrapper around `OwnedTargetPath` that allows it to be used in Vector config\nwith prefix default to `PathPrefix::Event`",
      "type": "string"
    },
    "vector_lookup::lookup_v2::ConfigValuePath": {
      "description": "A wrapper around `OwnedValuePath` that allows it to be used in Vector config.\nThis requires a valid path to be used. If you want to allow optional paths,\nuse [optional_path::OptionalValuePath].",
      "type": "string"
    },
    "vector_lookup::lookup_v2::optional_path::OptionalTargetPath": {
      "description": "An optional path that deserializes an empty string to `None`.",
      "type": "string"
    },
    "vector_lookup::lookup_v2::optional_path::OptionalValuePath": {
      "description": "An optional path that deserializes an empty string to `None`.",
      "type": "string"
    }
  }
}
