{
    "$id": "http://glue42.com/gd/otel.json",
    "$schema": "http://json-schema.org/draft-06/schema#",
    "title": "IO.Insights Configuration Schema",
    "description": "JSON schema for IO.Insights",
    "type": "object",
    "$comment": "Created after commit 73b0cbcc78c8eb5c657508c58b101b1ade8dfbe6",
    "properties": {
        "enabled": {
            "type": "boolean",
            "description": "Whether library is enabled. If disabled, API is still usable, but methods are no-ops."
        },
        "addHardwareDataToAttributes": {
            "type": "boolean",
            "description": "If `true`, the platform will add CPU, memory, and OS information to the resource attributes of the published signals.",
            "default": false
        },
        "definitiveInstance": {
            "type": "boolean",
            "description": "Internal library property."
        },
        "platformInstance": {
            "type": "boolean",
            "description": "Internal library property."
        },
        "registerControlMethods": {
            "type": "boolean",
            "description": "Internal library property."
        },
        "requestSettings": {
            "type": "boolean",
            "description": "For Node applications: whether to attempt to request io.Insights settings from the platform when initializing.",
            "default": true
        },
        "applicationName": {
            "type": "string",
            "description": "Application name to use in telemetry information. By default, it's populated by io.Connect."
        },
        "finalExportTimeoutMs": {
            "description": "Interval in milliseconds to wait for any remaining telemetry data to be exported during shutdown of the platform. This is the maximum awaiting interval and the platform may shutdown before it expires if all telemetry data has already been published.",
            "type": "number",
            "default": 0
        },
        "finalExportGracePeriodMs": {
            "description": "Interval in milliseconds to wait for any remaining telemetry data to be published by any apps before proceeding with the platform shutdown.",
            "type": "number",
            "default": 0
        },
        "errorlessMode": {
            "type": "boolean",
            "description": "Enable errorless mode operation.If `true`, the library will swallow all errors, instead of propagating them.",
            "default": false
        },
        "logSettingsOnStartup": {
            "type": "boolean",
            "default": true,
            "description": "If the library should log the settings used to initialize it."
        },
        "failOnInitError": {
            "type": "boolean",
            "description": "If failure to initialize library will throw upstream error."
        },
        "platformVersion": {
            "type": "string",
            "description": "If provided, this value will be added to the metrics and span attributes and to the span filtering context."
        },
        "suppressDoubleInitializationWarnings": {
            "type": "boolean",
            "description": "Suppress double initialization warnings from the OTEL SDK.",
            "default": false
        },
        "serviceName": {
            "type": "string",
            "description": "If provided, this value will be added to the metrics and traces service.name attribute, unless an OTEL service object has been provided to the library with a different setting."
        },
        "serviceId": {
            "type": "string",
            "description": "If provided, this value will be added to the metrics and traces service.instance.id attribute."
        },
        "serviceVersion": {
            "type": "string",
            "description": "If provided, this value will be added to the metrics and traces service.version attribute."
        },
        "userId": {
            "type": "string",
            "description": "If provided, this value will be added to the metrics and traces user.id attribute."
        },
        "headers": {
            "type": "object",
            "additionalProperties": {
                "type": "string"
            },
            "description": "Additional headers to send in HTTP requests, e.g. when using HTTP exporters."
        },
        "additionalAttributes": {
            "type": "object",
            "additionalProperties": {
                "type": [
                    "string",
                    "number",
                    "boolean",
                    "object",
                    "array",
                    "null"
                ]
            },
            "description": "Additional properties to publish as part of each OpenTelemetry signal, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?DefaultValue%`)."
        },
        "additionalResourceAttributes": {
            "type": "object",
            "additionalProperties": {
                "type": [
                    "string",
                    "number",
                    "boolean",
                    "object",
                    "array",
                    "null"
                ]
            },
            "description": "Additional properties to publish as part of the OpenTelemetry resource definition for all OpenTelemetry signals, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?DefaultValue%`)."
        },
        "addResourceAttributesToAttributes":{
            "type":"boolean",
            "description": "Whether to add resource attributes to signal attributes.",
            "default":false
        },
        "traces": {
            "$ref": "#/definitions/TracesSettings",
            "description": "Configuration for traces."
        },
        "metrics": {
            "$ref": "#/definitions/MetricsSettings",
            "description": "Configuration for metrics."
        },
        "logs": {
            "$ref": "#/definitions/LogsSettings",
            "description": "Configuration for logs."
        }
    },
    "required": [
        "enabled"
    ],
    "additionalProperties": true,
    "definitions": {
        "TracesSettings": {
            "type": "object",
            "description": "Configuration settings for traces.",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether tracing functionality is enabled. If disabled, API is still usable, but methods are no-ops.",
                    "default": false
                },
                "rootPropagationInfo": {
                    "$ref": "#/definitions/PropagationInfo",
                    "description": "Property for internal use."
                },
                "countMetric": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "default": "insights_trace_count",
                    "description": "Name of span hit counter metric, set to null to disable."
                },
                "durationMetric": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "default": "insights_trace_duration",
                    "description": "Name of span duration histogram metric, set to null to disable."
                },
                "resultMetric": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "default": "insights_trace_result",
                    "description": "Name of span result counter metric, set to null to disable."
                },
                "instrumentRequests": {
                    "type": "boolean",
                    "description": "If `true`, io.Insights will instrument and trace XMLHttpRequest and fetch() requests automatically.",
                    "default": true
                },
                "instrumentAppLoad": {
                    "type": "boolean",
                    "description": "If `true`, io.Insights will instrument and trace the application loading process automatically.",
                    "default": true
                },
                "instrumentDocumentLoad": {
                    "type": "boolean",
                    "description": "If `true`, io.Insights will instrument and trace the steps of the document load and initialization process automatically.",
                    "default": true
                },
                "filters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SpanFilter"
                    },
                    "description": "Array of filter entries used to determine whether a particular operation will create a tracing span."
                },
                "useDefaultFilters": {
                    "type": "boolean",
                    "default": true,
                    "description": "If true, use a predefined list of filters for well-known platform traces."
                },
                "defaultFilters": {
                    "type": "array",
                    "description": "This property is for internal use only.",
                    "items": {
                        "$ref": "#/definitions/SpanFilter"
                    }
                },
                "sampling": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SamplingSettings"
                    },
                    "description": "Array of sampling setting entries used to determine whether a span will be sampled."
                },
                "defaults": {
                    "$ref": "#/definitions/SpanCreationOptions",
                    "description": "Default settings if appropriate entries aren't found in 'filters' and 'sampling' collections."
                },
                "hybridContextMode": {
                    "type": "boolean",
                    "description": "If `true`, the library will use both the ContextManager provided by the OTEL SDK and the `Traces.currentTracingState` property to resolve the current context. See the documentation of the `useOTELContextManager` property for more details.",
                    "default": false
                },
                "useOTELContextManager": {
                    "type": "boolean",
                    "description": "If `true`, the library will use the ContextManager provided by the active OTEL SDK to manage and derive propagation information to ensure spans created across asynchronous operations are properly nested.",
                    "default": false
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "If an OTEL TraceProvider isn't provided to the library, it will initialize its own. If 'url' is specified, TracerProvider will have an OTLPTraceExporter using this destination URL."
                },
                "keepAlive": {
                    "type": "boolean",
                    "description": "Whether to keep the connection alive when sending traces.",
                    "default": true
                },
                "publishInterval": {
                    "type": "number",
                    "description": "Interval in milliseconds between trace export batches."
                },
                "compression": {
                    "$ref": "#/definitions/CompressionAlgorithm"
                },
                "concurrencyLimit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Maximum number of concurrent trace export requests."
                },
                "timeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum time the OTLP exporter will wait for each batch export.",
                    "default": 10000
                },
                "clickstream": {
                    "oneOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "type": "string",
                            "enum": [
                                "nested",
                                "sibling"
                            ]
                        },
                        {
                            "$ref": "#/definitions/ClickstreamTraceConfig"
                        }
                    ],
                    "default": false,
                    "description": "Whether the clickstream trace will be enabled. false - clickstream trace is disabled. true - same as sibling. nested - clickstream trace is enabled and each subsequent span is a child span of the previous one. sibling - clickstream trace is enabled and each subsequent span is a child of the same initial span."
                },
                "userJourney": {
                    "oneOf": [
                        {
                            "type": "boolean"
                        },
                        {
                            "type": "string",
                            "enum": [
                                "nested",
                                "sibling"
                            ]
                        },
                        {
                            "$ref": "#/definitions/UserJourneyTraceConfig"
                        }
                    ],
                    "default": true,
                    "description": "Whether the user journey trace will be enabled."
                },
                "startupParentSpanTimeoutMs": {
                    "description": "How long after application startup will any traced operations automatically be nested under the application startup trace.",
                    "type": "number",
                    "default": 3000
                },
                "closeTrace": {
                    "description": "If `true`, the application will create a span with the name `interopio.api.application.close` when it's being closed. This functionality requires close handlers to be enabled in the application configuration.",
                    "type": "boolean",
                    "default": false
                },
                "exporterSettings": {
                    "$ref": "#/definitions/OTLPExporterNodeConfigBase",
                    "description": "If an OTEL TraceProvider isn't provided to the library, it will initialize its own. If 'url' is specified, TracerProvider will have an OTLPTraceExporter with 'url' as destination URL and 'exporterSettings' as additional config."
                },
                "otlpExporterConfig": {
                    "$ref": "#/definitions/OTLPExporterNodeConfigBase",
                    "description": "Deprecated. Use exporterSettings."
                },
                "tracerProviderSettings": {
                    "$ref": "#/definitions/TracerConfig",
                    "description": "OTEL TracerConfig - provides an interface for configuring a Basic Tracer."
                },
                "processorSettings": {
                    "$ref": "#/definitions/BufferConfig",
                    "description": "Configuration for the batch span processor buffer settings."
                },
                "parentNameLimit": {
                    "type": "number",
                    "description": "Maximum length for parent operation names in span hierarchies."
                },
                "console": {
                    "type": "boolean",
                    "description": "If true, TracerProvider will have a ConsoleTraceExporter."
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send in HTTP requests, e.g. when using HTTP exporters."
                },
                "addResourceAttributesToAttributes": {
                    "type": "boolean",
                    "description": "Whether to add resource attributes to span attributes.",
                    "default": false
                },
                "additionalAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional span attributes to publish as part of each span, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                },
                "additionalResourceAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional attributes to publish as part of the OTEL resource definition, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                }
            },
            "required": [
                "enabled"
            ],
            "additionalProperties": true
        },
        "PropagationInfo": {
            "type": "object",
            "properties": {
                "traceparent": {
                    "type": "string"
                },
                "tracestate": {
                    "type": "string"
                },
                "forceTracing": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "description": "Span and trace information that can be used to manually control the nesting of a newly created span."
        },
        "SpanFilter": {
            "type": "object",
            "allOf": [
                {
                    "$ref": "#/definitions/SpanCreationOptions"
                }
            ],
            "properties": {
                "source": {
                    "type": "string",
                    "description": "Specifies the source string used for matching spans. Start string with '#' for case-insensitive regex match."
                },
                "context": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean"
                        ]
                    },
                    "description": "Specifies the filtering context values used for matching spans. Start strings with '#' for case-insensitive regex match."
                }
            },
            "description": "Filter entry that can match a span to control its settings."
        },
        "SpanCreationOptions": {
            "type": "object",
            "description": "Options that can be used when creating a span.",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether the span will be created or will be a no-op."
                },
                "stopPropagationIfSpanIsDisabled": {
                    "type": "boolean",
                    "description": "If a tracing span is disabled by filter, setting this to true will stop the propagation of trace nesting info across it.",
                    "default": false
                },
                "level": {
                    "type": "string",
                    "enum": [
                        "OFF",
                        "LOWEST",
                        "DIAGNOSTIC",
                        "DEBUG",
                        "INFO",
                        "WARN",
                        "HIGHEST"
                    ],
                    "default": "INFO",
                    "description": "Default span attribute verbosity level."
                },
                "addContextToTrace": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether the filtering context will be added as span attributes to the span."
                },
                "autoSetSuccessStatus": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the span's status will be set to OK on completion, if it's still UNSET."
                },
                "sample": {
                    "oneOf": [
                        {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": true,
                    "description": "Default sampling setting/probability."
                },
                "disablePropagation": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the span will not inject its propagation info into data transfer objects for span nesting across system boundaries."
                },
                "disableNesting": {
                    "type": "boolean",
                    "description": "Forces the span to create a new trace."
                },
                "log": {
                    "description": "If true, enabled spans will also be published as log entries using the `traceLogger` passed to the builder instance when building the Traces module.",
                    "type": "boolean",
                    "default": false
                },
                "logOnDisabledSpans": {
                    "type": "boolean",
                    "description": "If true, disabled spans will also be published as log entries using the `traceLogger` passed to the builder instance when building the Traces module.",
                    "default": false
                },
                "countMetric": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the span will be counted in the insights_trace_count metric."
                },
                "countMetricOnDisabledSpans": {
                    "type": "boolean",
                    "description": "Whether the span will be counted in the insights_trace_count metric if disabled. See TracesSettings.countMetric.",
                    "default": false
                },
                "resultMetric": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the span will be recorded in the insights_trace_result metric."
                },
                "resultMetricOnDisabledSpans": {
                    "type": "boolean",
                    "description": "Whether the span will be recorded in the insights_trace_result metric if disabled. See TracesSettings.resultMetric.",
                    "default": false
                },
                "durationMetric": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the span will be measured in the insights_trace_duration metric."
                },
                "durationMetricOnDisabledSpans": {
                    "type": "boolean",
                    "description": "Whether the span will be measured in the insights_trace_duration metric if disabled. See TracesSettings.durationMetric.",
                    "default": false
                },
                "canBeRoot": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether the span will be able to start a new trace."
                },
                "maxAttributeDepth": {
                    "type": "integer",
                    "default": 5,
                    "minimum": 0,
                    "description": "How deep addData method should recurse into objects when adding attributes to spans."
                },
                "forceChildTracing": {
                    "type": "boolean",
                    "default": false,
                    "description": "If true, any child spans will be forced to be traced, even if their span filter configuration is set to not enabled."
                },
                "minDurationMs": {
                    "type": "number",
                    "minimum": 0,
                    "default": 0,
                    "description": "If specified, spans whose duration is lower than this will not be sampled."
                },
                "overrideDefaultFilters": {
                    "type": "boolean",
                    "description": "If `true`, this filter rule will be matched before any default filters provided by io.Connect. The default filters are usually meant to reduce verbosity by not tracing some internal operations by default, but you can use this property to force them to be traced.If `false`, default filters will be matched before this filtering rule.",
                    "default": false
                },
                "otelSpanOptions": {
                    "$ref": "#/definitions/SpanOptions",
                    "description": "OTEL span options"
                }
            },
            "additionalProperties": true
        },
        "SamplingSettings": {
            "type": "object",
            "description": "Settings used to control the sampling probability of spans.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Span name to determine if span will match this sampling setting entry. Start string with '#' for case-insensitive regex match."
                },
                "attributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean"
                        ]
                    },
                    "description": "Span attributes that determine if span will match this sampling setting entry. Start strings with '#' for case-insensitive regex match."
                },
                "context": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean"
                        ]
                    },
                    "description": "Context values that determine if span will match this sampling setting entry. Start strings with '#' for case-insensitive regex match."
                },
                "sample": {
                    "oneOf": [
                        {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "description": "Probability that span will be sampled, based on its traceId. If true: will be sampled. If false: will not be sampled. If number between 0 and 1: has this probability of being sampled."
                }
            },
            "required": [
                "sample"
            ],
            "additionalProperties": true
        },
        "MetricsSettings": {
            "type": "object",
            "description": "Configuration settings for metrics.",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether metrics functionality is enabled. If disabled, API is still usable, but methods are no-ops.",
                    "default": false
                },
                "platformMetricsEnabled": {
                    "type": "boolean",
                    "description": "Whether to enable automatic collection of platform-level metrics (CPU, memory, etc.).",
                    "default": true
                },
                "defaultPublishingSettings": {
                    "$ref": "#/definitions/MetricPublishingSettings",
                    "description": "Default publishing settings for metrics."
                },
                "maxAttributeDepth": {
                    "type": "integer",
                    "default": 5,
                    "minimum": 0,
                    "description": "How deep the library should recurse into objects when adding labels to metrics."
                },
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MetricSettings"
                    },
                    "description": "Array of individual metric configurations to collect."
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "The destination URL for exporting metrics via OTLP."
                },
                "publishInterval": {
                    "type": "number",
                    "minimum": 0,
                    "default": 30000,
                    "description": "Interval in milliseconds between metric export batches."
                },
                "compression": {
                    "$ref": "#/definitions/CompressionAlgorithm"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname to include in exported metrics."
                },
                "keepAlive": {
                    "type": "boolean",
                    "description": "Whether to use HTTP keep-alive connections for metric exports."
                },
                "concurrencyLimit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Maximum number of concurrent metric export requests."
                },
                "timeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 10000,
                    "description": "Maximum time the OTLP exporter will wait for each batch export."
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send in HTTP requests."
                },
                "addResourceAttributesToAttributes": {
                    "type": "boolean",
                    "description": "Whether to add resource attributes to metric data point attributes.",
                    "default": false
                },
                "additionalAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional metrics properties to publish as part of each metric, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                },
                "additionalResourceAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional attributes to publish as part of the OTEL resource definition, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                },
                "meter": {
                    "type": "object",
                    "description": "Partial MetricsSettings for meter configuration."
                },
                "filters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MetricFilter"
                    },
                    "description": "Array of filter rules to determine which metrics should be collected and exported."
                },
                "useDefaultFilters": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether to apply predefined default filters for platform metrics."
                },
                "useLegacyWorkspaceStartupMetric": {
                    "type": "boolean",
                    "description": "If `true`, workspace_startup will be published as the legacy histogram metric from the io.Insights beta releases.",
                    "default": false
                },
                "meterProviderSettings": {
                    "type": "object",
                    "description": "Options to use when creating the MeterProvider for exporting metrics.",
                    "additionalProperties": true
                },
                "readerSettings": {
                    "type": "object",
                    "description": "Options to use when creating the PeriodicExportingMetricReader for exporting metrics.",
                    "additionalProperties": true
                },
                "exporterSettings": {
                    "allOf": [
                        { "$ref": "#/definitions/OTLPExporterNodeConfigBase" },
                        { "$ref": "#/definitions/OTLPMetricExporterOptions" }
                    ],
                    "description": "Options to use when creating the OTLPMetricExporter for exporting metrics."
                }
            },
            "additionalProperties": true,
            "required": [
                "enabled"
            ]
        },
        "MetricSettings": {
            "type": "object",
            "description": "Configuration for an individual metric.",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether this metric is enabled for collection."
                },
                "type": {
                    "$ref": "#/definitions/MetricType",
                    "description": "The type of metric to collect."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the metric."
                },
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the metric."
                },
                "platformVersion": {
                    "type": "string",
                    "description": "The platform version to associate with this metric."
                },
                "user": {
                    "type": "string",
                    "description": "The user identifier to associate with this metric."
                },
                "unit": {
                    "type": "string",
                    "description": "The unit of measurement for this metric (e.g., 'ms', 'bytes')."
                },
                "buckets": {
                    "type": "array",
                    "items": {
                        "type": "number"
                    },
                    "description": "Histogram bucket boundaries for histogram-type metrics."
                },
                "baseMetricType": {
                    "type": "string",
                    "enum": [
                        "histogram",
                        "gauge"
                    ],
                    "description": "The base OpenTelemetry metric type to use."
                },
                "additionalAttributes": {
                    "description": "Additional attributes to add to this metric.",
                    "type": "object",
                    "additionalProperties": true
                },
                "publishingSettings": {
                    "$ref": "#/definitions/MetricPublishingSettings",
                    "description": "Controls the publishing of the metric."
                }
            },
            "required": [
                "enabled",
                "type",
                "name",
                "description"
            ],
            "additionalProperties": true
        },
        "MetricPublishingSettings": {
            "type": "object",
            "description": "Controls the publishing of the metric.",
            "properties": {
                "sample": {
                    "oneOf": [
                        {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": true,
                    "description": "Defines sampling probability for the metric."
                },
                "attributeSettings": {
                    "type": "object",
                    "description": "Controls the publishing of specific attributes.",
                    "additionalProperties": {
                        "$ref": "#/definitions/MetricAttributeSettings"
                    }
                }
            },
            "additionalProperties": false
        },
        "MetricAttributeSettings": {
            "type": "object",
            "description": "Controls the publishing of specific attributes.",
            "properties": {
                "reduceModality": {
                    "type": "number",
                    "description": "If specified, the attribute value will be hashed and truncated to this length to reduce the modality of the published metrics. Set to 0 to drop the attribute entirely. Set to -1 to override any defaults."
                }
            },
            "additionalProperties": false
        },
        "MetricDefaultFilter": {
            "title": "MetricDefaultFilter",
            "type": "object",
            "description": "Default filter configuration for metrics.",
            "properties": {
                "type": {
                    "$ref": "#/definitions/MetricType",
                    "description": "The type of metrics this filter applies to."
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether metrics matching this filter are enabled."
                },
                "sample": {
                    "oneOf": [
                        {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "description": "Sampling probability for the metric."
                },
                "overrideDefaultFilters": {
                    "type": "boolean",
                    "default": false,
                    "description": "If `true`, this filter rule will be matched before any default filters provided by io.Connect. The default filters are usually meant filter out non-representative operations (e.g. partial workspace loads), but you can use this property to force them to be measured. If `false`, default filters will be matched before this filtering rule."
                },
                "attributes": {
                    "type": "object",
                    "description": "Matches the attributes attached to a metric value. Not all metrics have all attribute values.",
                    "properties": {
                        "complexLoad": {
                            "type": "boolean",
                            "description": "Indicates whether the workspace loading involved a complex operation where existing apps are added to a new workspace. This attribute can be used to filter out metrics."
                        },
                        "includesFrameCreation": {
                            "type": "boolean",
                            "description": "Indicates whether the metric includes the time to create and load the Workspace Frame App when the workspace is opened in a new frame."
                        }
                    },
                    "additionalProperties": true
                }
            },
            "required": [
                "enabled"
            ],
            "additionalProperties": true
        },
        "MetricFilter": {
            "description": "Metric filters that can be specified as part of a specific metric.",
            "allOf": [
                {
                    "$ref": "#/definitions/MetricDefaultFilter"
                },
                {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string",
                            "description": "The name of the matched metric."
                        },
                        "type": {
                            "$ref": "#/definitions/MetricType",
                            "description": "The type of the matched metric."
                        }
                    },
                    "required": [
                        "name",
                        "type"
                    ],
                    "additionalProperties": true
                }
            ]
        },
        "MetricType": {
            "type": "string",
            "description": "Enumeration of supported metric types for collection.",
            "enum": [
                "app_count",
                "app_cpu",
                "app_crash",
                "app_duration",
                "app_duration_soft",
                "app_error",
                "app_memory",
                "app_started",
                "app_startup",
                "app_stopped",
                "layout_startup",
                "workspace_count",
                "workspace_selected",
                "workspace_started",
                "workspace_stopped",
                "workspace_startup_legacy",
                "workspace_startup",
                "workspace_startup_frame",
                "workspace_startup_frame_init",
                "workspace_startup_frame_page_load",
                "workspace_startup_frame_workspace_render",
                "workspace_startup_component",
                "workspace_startup_apps",
                "platform_error",
                "platform_startup",
                "system_cpu",
                "system_memory",
                "custom_gauge",
                "custom_observable_gauge",
                "custom_observable_counter",
                "custom_observable_up_down_counter",
                "custom_counter",
                "custom_histogram",
                "custom_up_down_counter",
                "null"
            ]
        },
        "LogsSettings": {
            "type": "object",
            "description": "Configuration settings for logs.",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether logging functionality is enabled. If disabled, API is still usable, but methods are no-ops.",
                    "default": false
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "OTLP logs exporter endpoint URL."
                },
                "keepAlive": {
                    "type": "boolean",
                    "description": "Whether to keep the connection alive when sending logs.",
                    "default": true
                },
                "publishInterval": {
                    "type": "number",
                    "description": "Interval in milliseconds between logs export batches."
                },
                "compression": {
                    "$ref": "#/definitions/CompressionAlgorithm"
                },
                "concurrencyLimit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Maximum number of concurrent logs export requests."
                },
                "timeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum time the OTLP exporter will wait for each batch export.",
                    "default": 10000
                },
                "exporterSettings": {
                    "$ref": "#/definitions/OTLPExporterNodeConfigBase",
                    "description": "Settings for the OTLP exporter used to send logs."
                },
                "processorSettings": {
                    "$ref": "#/definitions/BatchLogRecordProcessorBrowserConfig",
                    "description": "Settings for batching log records before export."
                },
                "loggerProviderSettings": {
                    "$ref": "#/definitions/LoggerProviderConfig",
                    "description": "Configuration for the logger provider."
                },
                "levelCountMetric": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Name of log level counter metric, set to null to disable.",
                    "default": "insights_log_level_count"
                },
                "startupTraceAssociationTimeoutMs": {
                    "type": "number",
                    "description": "How long after application startup will any log entries automatically be associated with the application startup trace."
                },
                "useDefaultFilters": {
                    "type": "boolean",
                    "description": "If true, use a predefined list of filters for well-known platform logs.",
                    "default": true
                },
                "maxAttributeDepth": {
                    "type": "integer",
                    "default": 5,
                    "minimum": 0,
                    "description": "How deep the library should recurse into objects when adding labels to logs."
                },
                "filters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LogFilter"
                    },
                    "description": "Array of filter entries used to determine whether a particular log entry will be emitted, and which attributes will be included. If no matching filter entry is found, the settings from 'defaults' are used."
                },
                "defaults": {
                    "$ref": "#/definitions/LogOptions",
                    "description": "Default settings if appropriate entries aren't found in 'filters' collection."
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send in HTTP requests, e.g. when using HTTP exporters."
                },
                "addResourceAttributesToAttributes": {
                    "type": "boolean",
                    "description": "Whether to add resource attributes to log entry attributes.",
                    "default": false
                },
                "additionalAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional logs attributes to publish as part of each log entry, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                },
                "additionalResourceAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "object",
                            "array",
                            "null"
                        ]
                    },
                    "description": "Additional attributes to publish as part of the OTEL resource definition, specified as key/value pairs. You can use environment variables as values. Environment variables must start and end with a percent sign (e.g., `%MyEnvVar%`), and can contain a fallback value (e.g., `%MyEnvVar?literalDefaultValue%`)."
                }
            },
            "required": [
                "enabled"
            ],
            "additionalProperties": true
        },
        "LogOptions": {
            "type": "object",
            "description": "Options for controlling log entry publishing and attribute filtering.",
            "properties": {
                "allowedAttributes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of allowed attributes for logging. If specified, any attributes missing from the list will be removed from the log entry before publishing it."
                },
                "hideRegex": {
                    "type": "string",
                    "description": "Regex pattern for hiding sensitive log data. If specified, the log entry will have text matching this regex replaced with asterisks."
                },
                "enabled": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether this log option is enabled. If `false`, the log entry will not be published."
                }
            },
            "additionalProperties": true
        },
        "LogFilter": {
            "type": "object",
            "description": "Used to match and control publishing of log entries.",
            "allOf": [
                {
                    "$ref": "#/definitions/LogOptions"
                }
            ],
            "properties": {
                "categoryName": {
                    "type": "string",
                    "description": "Used to match the category of the log entry."
                },
                "severity": {
                    "type": "string",
                    "enum": [
                        "TRACE",
                        "DEBUG",
                        "INFO",
                        "WARN",
                        "ERROR",
                        "FATAL"
                    ],
                    "description": "Used to match the severity of the log entry."
                },
                "bodyRegex": {
                    "type": "string",
                    "description": "Regex pattern used to match the text of the log entry."
                }
            },
            "additionalProperties": true
        },
        "BufferConfig": {
            "type": "object",
            "description": "Interface configuration for a buffer used by batch processors",
            "properties": {
                "maxExportBatchSize": {
                    "type": "number",
                    "minimum": 1,
                    "default": 512,
                    "description": "The maximum batch size of every export. It must be smaller or equal to maxQueueSize."
                },
                "scheduledDelayMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 5000,
                    "description": "The delay interval in milliseconds between two consecutive exports."
                },
                "exportTimeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 30000,
                    "description": "How long the export can run before it is cancelled."
                },
                "maxQueueSize": {
                    "type": "number",
                    "minimum": 1,
                    "default": 2048,
                    "description": "The maximum queue size. After the size is reached spans are dropped."
                }
            },
            "additionalProperties": true
        },
        "BatchLogRecordProcessorBrowserConfig": {
            "type": "object",
            "description": "Configuration for the batch log record processor, including browser-specific flush behaviour.",
            "allOf": [
                { "$ref": "#/definitions/BufferConfig" }
            ],
            "properties": {
                "disableAutoFlushOnDocumentHide": {
                    "type": "boolean",
                    "description": "Disable flush when a user navigates to a new page, closes the tab or the browser, or, on mobile, switches to a different app. Auto flush is enabled by default."
                }
            },
            "additionalProperties": true
        },
        "LoggerProviderConfig": {
            "type": "object",
            "description": "Configuration for OpenTelemetry Logger Provider",
            "properties": {
                "resource": {
                    "type": "object",
                    "description": "Resource associated with log telemetry"
                },
                "forceFlushTimeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 30000,
                    "description": "How long the forceFlush can run before it is cancelled."
                },
                "logRecordLimits": {
                    "$ref": "#/definitions/LogRecordLimits",
                    "description": "Log record limits configuration"
                }
            },
            "additionalProperties": true
        },
        "LogRecordLimits": {
            "type": "object",
            "description": "Limits configuration for log records",
            "properties": {
                "attributeValueLengthLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum allowed attribute value size"
                },
                "attributeCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Number of attributes per LogRecord"
                }
            },
            "additionalProperties": true
        },
        "AggregationTemporality": {
            "title": "AggregationTemporality",
            "type": "integer",
            "enum": [0, 1],
            "tsEnumNames": ["DELTA", "CUMULATIVE"],
            "tsConstEnum": false,
            "description": "OpenTelemetry aggregation temporality. DELTA (0) - metrics represent changes since last collection. CUMULATIVE (1) - metrics represent totals since start."
        },
        "AggregationTemporalityPreference": {
            "title": "AggregationTemporalityPreference",
            "type": "integer",
            "enum": [0, 1, 2],
            "tsEnumNames": ["DELTA", "CUMULATIVE", "LOWMEMORY"],
            "tsConstEnum": false,
            "description": "Preferred aggregation temporality for the OTLP metric exporter. DELTA (0) - prefer delta temporality. CUMULATIVE (1) - prefer cumulative temporality. LOWMEMORY (2) - use delta for most instruments, cumulative for up-down counters and observable up-down counters."
        },
        "OTLPMetricExporterOptions": {
            "allOf": [
                { "$ref": "#/definitions/OTLPExporterConfig" }
            ],
            "type": "object",
            "description": "Configuration options for the OTLP metric exporter.",
            "properties": {
                "temporalityPreference": {
                    "oneOf": [
                        { "$ref": "#/definitions/AggregationTemporalityPreference" },
                        { "$ref": "#/definitions/AggregationTemporality" }
                    ],
                    "description": "Preferred aggregation temporality for exported metrics."
                }
            },
            "additionalProperties": true
        },
        "OTLPExporterNodeConfigBase": {
            "type": "object",
            "description": "Node.js-specific base configuration for OTLP exporters.",
            "allOf": [
                { "$ref": "#/definitions/OTLPExporterConfig" }
            ],
            "properties": {
                "keepAlive": {
                    "type": "boolean",
                    "description": "Whether to keep HTTP connections alive."
                },
                "compression": {
                    "$ref": "#/definitions/CompressionAlgorithm",
                    "description": "Compression algorithm to use when exporting."
                },
                "httpAgentOptions": {
                    "type": "object",
                    "description": "Options for the Node.js HTTP/HTTPS agent (http.AgentOptions | https.AgentOptions).",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true
        },
        "OTLPExporterConfig": {
            "type": "object",
            "description": "Base configuration for OTLP exporters",
            "properties": {
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send with requests"
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "OTLP endpoint URL"
                },
                "concurrencyLimit": {
                    "type": "number",
                    "minimum": 1,
                    "description": "Maximum number of concurrent requests"
                },
                "timeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 10000,
                    "description": "Maximum time the OTLP exporter will wait for each batch export"
                }
            },
            "additionalProperties": true
        },
        "TracerConfig": {
            "type": "object",
            "description": "OTEL TracerConfig - provides an interface for configuring a Basic Tracer.",
            "properties": {
                "sampler": {
                    "description": "Sampler to use for trace sampling decisions."
                },
                "generalLimits": {
                    "$ref": "#/definitions/GeneralLimits",
                    "description": "General limits configuration"
                },
                "spanLimits": {
                    "$ref": "#/definitions/SpanLimits",
                    "description": "Span limits configuration"
                },
                "resource": {
                    "description": "Resource to associate with traces."
                },
                "idGenerator": {
                    "description": "ID generator to use for generating trace and span IDs."
                },
                "forceFlushTimeoutMillis": {
                    "type": "number",
                    "minimum": 0,
                    "default": 30000,
                    "description": "How long the forceFlush can run before it is cancelled"
                },
                "spanProcessors": {
                    "type": "array",
                    "items": true,
                    "description": "List of SpanProcessor for the tracer"
                }
            },
            "additionalProperties": true
        },
        "GeneralLimits": {
            "type": "object",
            "description": "Global configuration limits of trace service",
            "properties": {
                "attributeValueLengthLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum allowed attribute value size"
                },
                "attributeCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Number of attributes per trace"
                }
            },
            "additionalProperties": true
        },
        "SpanLimits": {
            "type": "object",
            "description": "Global configuration of trace service",
            "properties": {
                "attributeValueLengthLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum allowed attribute value size"
                },
                "attributeCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Number of attributes per span"
                },
                "linkCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Number of links per span"
                },
                "eventCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Number of message events per span"
                },
                "attributePerEventCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum number of attributes allowed per span event"
                },
                "attributePerLinkCountLimit": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum number of attributes allowed per span link"
                }
            },
            "additionalProperties": true
        },
        "SpanOptions": {
            "type": "object",
            "description": "Options needed for span creation",
            "properties": {
                "kind": {
                    "title": "SpanKind",
                    "type": "integer",
                    "enum": [
                        0,
                        1,
                        2,
                        3,
                        4
                    ],
                    "tsEnumNames": [
                        "INTERNAL",
                        "SERVER",
                        "CLIENT",
                        "PRODUCER",
                        "CONSUMER"
                    ],
                    "tsConstEnum": false,
                    "description": "Specifies the kind of span in OpenTelemetry traces."
                },
                "attributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": [
                            "string",
                            "number",
                            "boolean",
                            "array"
                        ]
                    },
                    "description": "A span's attributes"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "context": {
                                "type": "object",
                                "description": "Span context to link to",
                                "properties": {
                                    "traceId": {
                                        "type": "string",
                                        "description": "32 lowercase hex chars (128-bit) identifying the trace.",
                                        "pattern": "^[0-9a-f]{32}$",
                                        "$comment": "If you want to disallow the all-zeros ID per W3C, add: { \"not\": { \"pattern\": \"^0{32}$\" } }"
                                    },
                                    "spanId": {
                                        "type": "string",
                                        "description": "16 lowercase hex chars (64-bit) identifying the span.",
                                        "pattern": "^[0-9a-f]{16}$",
                                        "$comment": "To disallow all-zeros span ID: add { \"not\": { \"pattern\": \"^0{16}$\" } }"
                                    },
                                    "isRemote": {
                                        "type": "boolean",
                                        "description": "True only if the SpanContext was propagated from a remote parent.",
                                        "default": false
                                    },
                                    "traceFlags": {
                                        "type": "integer",
                                        "description": "1-byte bitmap of trace flags (e.g., least-significant bit is sampling).",
                                        "minimum": 0,
                                        "maximum": 255,
                                        "$comment": "Use bit 0 (LSB) as 'sampled' if following W3C TraceFlags."
                                    },
                                    "traceState": {
                                        "type":"object",
                                        "additionalProperties": true,
                                        "description": "Tracing-system-specific info to propagate. More Info: https://www.w3.org/TR/trace-context/#tracestate-field"
                                    }
                                },
                                "required": [
                                    "traceId",
                                    "spanId",
                                    "traceFlags"
                                ]
                            },
                            "attributes": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": [
                                        "string",
                                        "number",
                                        "boolean",
                                        "array"
                                    ]
                                },
                                "description": "Link attributes"
                            }
                        },
                        "required": [
                            "context"
                        ]
                    },
                    "description": "Links span to other spans"
                },
                "startTime": {
                    "anyOf": [
                        {
                            "type": "array",
                            "items": [
                                {
                                    "type": "number"
                                },
                                {
                                    "type": "number"
                                }
                            ],
                            "minItems": 2,
                            "maxItems": 2,
                            "description": "Tuple of two numbers"
                        },
                        {
                            "type": "number"
                        },
                        {
                            "type": "string",
                            "format": "date-time",
                            "tsType": "Date",
                            "description": "ISO 8601 date-time string (represents Date)"
                        }
                    ],
                    "description": "A manually specified start time for the created Span object"
                },
                "root": {
                    "type": "boolean",
                    "description": "The new span should be a root span (ignore parent from context)"
                }
            },
            "additionalProperties": true
        },
        "CompressionAlgorithm": {
            "title": "CompressionAlgorithm",
            "type": "string",
            "enum": [
                "none",
                "gzip"
            ],
            "tsEnumNames": [
                "NONE",
                "GZIP"
            ],
            "description": "Compression algorithm to use when exporting.",
            "tsConstEnum": false
        },
        "UserJourneyTraceConfig": {
            "type": "object",
            "description": "Configuration for User Journey trace behavior. Controls how significant User Journey milestones are tracked throughout the platform session.",
            "required": [
                "enabled"
            ],
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the User Journey trace is enabled."
                },
                "structure": {
                    "type": "string",
                    "enum": [
                        "sibling",
                        "nested"
                    ],
                    "default": "sibling",
                    "description": "If `sibling`, all spans in the User Journey trace will be nested under the same root span. This is useful when working with visualization interfaces that do not handle arbitrarily nested spans. If `nested`, every span in the User Journey trace will be nested under the previous span. This is useful for some kinds of querying."
                },
                "descriptiveName": {
                    "type": "boolean",
                    "default": true,
                    "description": "If `true`, the User Journey trace spans will be named interopio.desktop.userJourney.<event>.<applicationName>. If `false`, the User Journey trace spans will be named interopio.api.userJourney.<event>"
                },
                "chainLength": {
                    "type": "number",
                    "default": 0,
                    "description": "If specified, this number of previously focused applications and their focus times will be added as attributes to the User Journey span. This is useful for some kinds of querying."
                }
            },
            "additionalProperties": true
        },
        "ClickstreamTraceConfig": {
            "type": "object",
            "description": "Configuration for Clickstream trace behavior. Controls how user interaction events are tracked and organized in traces.",
            "required": [
                "enabled"
            ],
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the Clickstream trace is enabled."
                },
                "structure": {
                    "type": "string",
                    "enum": [
                        "sibling",
                        "nested"
                    ],
                    "default": "sibling",
                    "description": "If `sibling`, all spans in the Clickstream trace will be nested under the same root span. This is useful when working with visualization interfaces that do not handle arbitrarily nested spans. If `nested`, every span in the Clickstream trace will be nested under the previous span. This is useful for some kinds of querying."
                },
                "descriptiveName": {
                    "type": "boolean",
                    "default": true,
                    "description": "If `true`, the Clickstream trace spans will be named interopio.api.clickstream.<applicationName>.<event>. If `false`, the Clickstream trace spans will be named interopio.api.clickstream.<event>"
                },
                "events": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "default": ["click"],
                    "description": "List of DOM event names to capture as Clickstream trace spans."
                },
                "nestEventListeners": {
                    "type": "boolean",
                    "default": true,
                    "description": "If `true`, io.Insights will try to nest spans from other event listeners for the same event under the Clickstream span. This is not guaranteed to always work due to specifics of how browsers execute event listeners, and will only work for listeners attached after io.Connect was initialized."
                }
            },
            "additionalProperties": true
        },
        "Log4JSToOTELAppenderConfig": {
            "type": "object",
            "description": "This interface describes the log4js appender configuration that controls the @interopio/log4js-otel bridge appender.",
            "properties": {
                "layout": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "log4js layout to use for structuring the log entries. If not specified, uses MessagePassThroughLayout."
                },
                "maxRecordsBeforeOTELActive": {
                    "type": "number",
                    "description": "Maximum number of log records to store in memory before the OTEL SDK has finished initializing. Use -1 for an infinite number.",
                    "default": 10000
                },
                "maxTimeBeforeOTELActiveMs": {
                    "type": "number",
                    "description": "Maximum duration of time to store log entries in memory before the OTEL SDK has finished initializing. Use -1 for an infinite duration.",
                    "default": -1
                },
                "logErrorsInConsole": {
                    "type": "boolean",
                    "description": "Whether errors in the @interopio/log4js-otel bridge appender will be logged to the console.",
                    "default": true
                }
            },
            "required": [],
            "additionalProperties": false
        }
    }
}