Output Qualifier

Schema

output-qualifier.json

{
    "$id": "https://schemas.highbyte.com/intelligencehub/output/4.5.0.json",
    "$defs": {
        "CreateType": {
            "type": "string",
            "enum": [
                "off",
                "create",
                "create_and_update"
            ]
        },
        "FilePathSearch": {
            "type": "object",
            "properties": {
                "path": {
                    "type": "string"
                },
                "searchType": {
                    "const": "filePathSearch"
                }
            }
        },
        "Interval": {
            "type": "object",
            "properties": {
                "duration": {
                    "type": "integer",
                    "description": "The length of the interval."
                },
                "units": {
                    "type": "string",
                    "enum": [
                        "Milliseconds",
                        "Seconds",
                        "Minutes",
                        "Hours",
                        "Days"
                    ],
                    "description": "The unit of time for the interval (e.g., seconds, minutes, hours, days)."
                }
            },
            "description": "Represents a time interval, used for batching and cache lifetime in pipeline configuration."
        },
        "OpcUaNodeIdentifier": {
            "type": "object",
            "properties": {
                "identifierType": {
                    "type": "string",
                    "enum": [
                        "Invalid",
                        "Numeric",
                        "String",
                        "Guid",
                        "Opaque"
                    ]
                },
                "namespaceIndex": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                },
                "type": {
                    "const": "NodeId"
                }
            },
            "required": [
                "type"
            ]
        },
        "SourceType": {
            "type": "string",
            "enum": [
                "Payload",
                "FilePath"
            ]
        },
        "WriteOperation": {
            "type": "string",
            "enum": [
                "insert",
                "update",
                "upsert"
            ]
        }
    },
    "type": "object",
    "properties": {
        "description": {
            "type": "string",
            "description": "Description of the configuration element."
        },
        "groupAs": {
            "type": "string",
            "description": "Optional grouping identifier for organizing configuration elements into logical groups."
        },
        "id": {
            "type": "string",
            "description": "UUID for the configuration element. If not provided, a random UUID will be generated. This ID is used to track the element across changes and should be stable for the lifetime of the process."
        },
        "name": {
            "type": "string",
            "description": "Name of the configuration element."
        },
        "qualifier": {
            "anyOf": [
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "dataStream": {
                            "type": "string",
                            "description": "The name of the data stream to write to."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "partitionKey": {
                            "type": "string",
                            "description": "An optional partition key for the data stream. Outputs with a specified partition key all write to the same shard; when omitted, requests are distributed across shards."
                        }
                    },
                    "description": "Settings qualifier for an AWS Kinesis Data Streams output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "deliveryStream": {
                            "type": "string",
                            "description": "Name of the Kinesis Data Firehose delivery stream to write to"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "description": "Settings qualifier for an AWS Kinesis Data Firehose output"
                },
                {
                    "type": "object",
                    "properties": {
                        "assetName": {
                            "type": "string",
                            "description": "Optional asset name for the target asset"
                        },
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "create": {
                            "type": "boolean",
                            "description": "When true, creates missing SiteWise assets or measurements"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "hierarchyName": {
                            "type": "string",
                            "description": "Optional hierarchy name used when creating assets"
                        },
                        "modelName": {
                            "type": "string",
                            "description": "Optional asset model name for created assets"
                        },
                        "parentAssetName": {
                            "type": "string",
                            "description": "Optional name of the parent asset in SiteWise"
                        },
                        "timestamp": {
                            "type": "string",
                            "description": "Optional payload field to use as the SiteWise timestamp"
                        },
                        "writePath": {
                            "type": "string",
                            "description": "Write path to use when sending data: realtime or buffered"
                        }
                    },
                    "description": "Settings qualifier for an AWS IoT SiteWise output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "bucketName": {
                            "type": "string",
                            "description": "The name of the bucket to write output data to. This field supports dynamic output references."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "headers": {
                            "description": "Optional metadata headers (for example Content-Type) to include with the S3 object.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "key": {
                            "type": "string",
                            "description": "Specifies the default file name in S3. If left empty the file name is a GUID with a timestamp. This field supports dynamic output references."
                        },
                        "payloadReference": {
                            "type": "string",
                            "description": "When working with complex payloads, uses a dynamic output to specify the attribute that contains the file payload. If left blank, the entire payload is written out."
                        },
                        "sourceFilePath": {
                            "type": "string",
                            "description": "Path to the source file for data."
                        },
                        "sourceType": {
                            "$ref": "#/$defs/SourceType",
                            "description": "Describes if the source of the data is from a file on disk or from a payload"
                        },
                        "storageClass": {
                            "type": "string",
                            "enum": [
                                "Standard",
                                "ReducedRedundancy",
                                "Glacier",
                                "StandardInfrequentAccess",
                                "OneZoneInfrequentAccess",
                                "IntelligentTiering",
                                "DeepArchive",
                                "Outposts",
                                "GlacierInstantRetrieval"
                            ],
                            "description": "Specifies the S3 storage class for the objects being written."
                        },
                        "utcTimePathPrefix": {
                            "type": "boolean",
                            "description": "When enabled a time prefix is added to the key to logically separate files in S3 as yyyy/MM/dd/HH/key."
                        }
                    },
                    "description": "Settings qualifier for an Amazon S3 output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "createOption": {
                            "type": "string",
                            "enum": [
                                "off",
                                "create",
                                "create_and_update"
                            ],
                            "description": "Controls table and namespace creation. Off requires them to exist, Create creates them if they do not exist, and Create & Update also updates the table schema when new attributes appear."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "namespace": {
                            "type": "string",
                            "description": "The namespace to write to in the table bucket. A table has a single namespace, but a table bucket can contain multiple namespaces."
                        },
                        "table": {
                            "type": "string",
                            "description": "The name of the table to write to. Table names must follow S3 naming restrictions (for example, no upper case)."
                        },
                        "tableBucketARN": {
                            "type": "string",
                            "description": "The full ARN of the table bucket to write to, for example arn:aws:s3tables:region:account-id:bucket/name."
                        }
                    },
                    "description": "Settings Qualifier for an S3 Tables Output"
                },
                {
                    "type": "object",
                    "properties": {
                        "blobName": {
                            "type": "string",
                            "description": "The name of the blob. If no name is provided the blob name is a GUID and timestamp. This field supports dynamic references."
                        },
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "containerName": {
                            "type": "string",
                            "description": "The name of the storage container to place the data. Supports dynamic references."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "payloadReference": {
                            "type": "string",
                            "description": "When working with complex payloads, uses a dynamic output to specify the attribute that contains the file payload. If left blank, the entire payload is written out."
                        },
                        "utcTimePathPrefix": {
                            "type": "boolean",
                            "description": "When enabled a time prefix is added to the blob name to logically separate files as yyyy/MM/dd/HH/blob."
                        }
                    },
                    "description": "Settings qualifier for an Azure Blob Storage output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "template": {
                            "type": "string",
                            "description": "Optional payload template used to format events before publishing to Event Hubs"
                        }
                    },
                    "description": "Settings qualifier for an Azure Event Hubs output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "source": {
                            "type": "string",
                            "description": "Name of the IoT Edge source or module to publish to"
                        },
                        "template": {
                            "type": "string",
                            "description": "Optional payload template used to format edge messages"
                        }
                    },
                    "description": "Settings qualifier for an Azure IoT Edge output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "modelComponent": {
                            "type": "string",
                            "description": "Optional model component or interface backing the message"
                        },
                        "template": {
                            "type": "string",
                            "description": "Optional payload template used to format IoT Hub messages"
                        }
                    },
                    "description": "Settings qualifier for an Azure IoT Hub output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filePath": {
                            "type": "string",
                            "description": "The file path to use to place the data. If no name is provided the file name is a GUID and timestamp. This field supports dynamic references."
                        },
                        "fileSystemName": {
                            "type": "string",
                            "description": "The name of the Gen 2 storage container to place the data. Supports dynamic references."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "payloadReference": {
                            "type": "string",
                            "description": "When working with complex payloads, uses a dynamic output to specify the attribute that contains the file payload. If left blank, the entire payload is written out."
                        },
                        "sourceFilePath": {
                            "type": "string",
                            "description": "Path to the source file for data."
                        },
                        "sourceType": {
                            "$ref": "#/$defs/SourceType",
                            "description": "Describes if the source of the data is from a file on disk or from a payload"
                        },
                        "utcTimePathPrefix": {
                            "type": "boolean",
                            "description": "When enabled a time prefix is added to the path to logically separate files as yyyy/MM/dd/HH/path."
                        }
                    },
                    "description": "Settings qualifier for an Azure OneLake output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "catalog": {
                            "type": "string",
                            "description": "Name of the Unity Catalog to write to."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "path": {
                            "type": "string",
                            "description": "Relative path within the volume where files will be created."
                        },
                        "schema": {
                            "type": "string",
                            "description": "Name of the schema within the catalog that contains the volume."
                        },
                        "sourceFilePath": {
                            "type": "string",
                            "description": "Path to the source file for data."
                        },
                        "sourceType": {
                            "$ref": "#/$defs/SourceType",
                            "description": "Describes if the source of the data is from a file on disk or from a payload"
                        },
                        "volume": {
                            "type": "string",
                            "description": "Name of the volume where files will be written."
                        }
                    },
                    "description": "Settings qualifier for a Databricks client output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "catalog": {
                            "type": "string",
                            "description": "Name of the Unity Catalog to write to."
                        },
                        "createOption": {
                            "$ref": "#/$defs/CreateType",
                            "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "schema": {
                            "type": "string",
                            "description": "Name of the schema within the catalog."
                        },
                        "table": {
                            "type": "string",
                            "description": "Name of the destination Zerobus table."
                        }
                    },
                    "description": "Settings qualifier for a Databricks Zerobus output"
                },
                {
                    "anyOf": [
                        {
                            "type": "object",
                            "properties": {
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "file": {
                                    "$ref": "#/$defs/FilePathSearch",
                                    "description": "The path of the file to delete."
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "type": {
                                    "const": "delete"
                                }
                            },
                            "description": "Settings qualifier for a file delete output",
                            "required": [
                                "type"
                            ]
                        },
                        {
                            "type": "object",
                            "properties": {
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "destination": {
                                    "type": "string",
                                    "description": "Destination path the matching file(s) are moved to. Supports dynamic outputs."
                                },
                                "file": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "regex": {
                                                    "type": "string"
                                                },
                                                "relativePath": {
                                                    "type": "string"
                                                },
                                                "searchType": {
                                                    "const": "fileRegexSearch"
                                                }
                                            },
                                            "required": [
                                                "searchType"
                                            ],
                                            "description": "Search criteria identifying the source file(s) to move."
                                        },
                                        {
                                            "$ref": "#/$defs/FilePathSearch",
                                            "description": "Search criteria identifying the source file(s) to move."
                                        }
                                    ]
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "type": {
                                    "const": "move"
                                }
                            },
                            "description": "Settings qualifier for a file move output",
                            "required": [
                                "type"
                            ]
                        },
                        {
                            "type": "object",
                            "properties": {
                                "base64Decoding": {
                                    "type": "boolean",
                                    "description": "When enabled, payloads are Base64 decoded before being written as a file. Used when receiving Base64 encoded file payloads over other connections."
                                },
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "fileName": {
                                    "type": "string",
                                    "description": "Specifies the name of the file to write to, including directories and extension. The file path can include dynamic outputs (for example /{{this.site}}/file.bin)."
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "payloadReference": {
                                    "type": "string",
                                    "description": "When working with complex payloads, uses a dynamic output to specify the attribute that contains the file payload. If left blank, the connector writes the entire payload out to the file."
                                },
                                "relativePath": {
                                    "type": "string",
                                    "description": "The relative path of the starting directory in regard to the connection level File Directory setting."
                                },
                                "type": {
                                    "const": "write"
                                }
                            },
                            "description": "Settings qualifier for a generic file output"
                        }
                    ],
                    "properties": {}
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "create": {
                            "type": "boolean",
                            "description": "When enabled, the file and directory structure are created if they do not exist. If they do exist, data is appended to the end of the file."
                        },
                        "delimiter": {
                            "type": "string",
                            "description": "The delimiter to use in the output file. By default this is a comma."
                        },
                        "fileName": {
                            "type": "string",
                            "description": "Specifies the name of the file to write to, including directories and extension. The file path can include dynamic outputs (for example /{{this.site}}/file.csv)."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "relativePath": {
                            "type": "string",
                            "description": "The relative path of the starting directory in regard to the connection level File Directory setting."
                        }
                    },
                    "description": "Settings qualifier for a CSV file output"
                },
                {
                    "type": "object",
                    "properties": {
                        "baseFileName": {
                            "type": "string",
                            "description": "The base filename to write out. Supports dynamic outputs and is combined with a timestamp and GUID (yyyy-MM-dd-HH-mm-ss-guid) to ensure uniqueness."
                        },
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "duration": {
                            "type": "integer",
                            "description": "Specifies how much data is in each file in minutes. The default duration is 1 minute; each file then contains one minute of data."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "relativePath": {
                            "type": "string",
                            "description": "The relative path of the starting directory with respect to the connection level File Directory setting."
                        }
                    },
                    "description": "Settings qualifier for a Parquet file output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "topicId": {
                            "type": "string",
                            "description": "The Topic ID as defined in the Google Cloud Pub/Sub configuration. This is the topic the output publishes data to."
                        }
                    },
                    "description": "Settings qualifier for a Google Pub/Sub output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "create": {
                            "type": "boolean",
                            "description": "When true, creates the tag if it does not exist"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "tagAddress": {
                            "type": "string",
                            "description": "Ignition tag path to write to"
                        }
                    },
                    "description": "Settings qualifier for an Ignition output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "bucket": {
                            "type": "string",
                            "description": "Specifies the InfluxDB bucket to write data to. The bucket must exist and be accessible for the connection token."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "measurement": {
                            "type": "string",
                            "description": "Specifies the measurement name. If left blank, the model or data type name is used. Supports dynamic outputs."
                        },
                        "nameTag": {
                            "type": "string",
                            "description": "Specifies the name tag added to the measurement. If left blank, the input or instance name is used. Supports dynamic outputs."
                        },
                        "tags": {
                            "description": "The tags associated with the data written to InfluxDB. Each tag is specified on a separate line and can use dynamic outputs to organize data (for example, into an ISA-95 structure).",
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "timestamp": {
                            "type": "string",
                            "description": "Specifies the timestamp of the data written to InfluxDB. If left blank, the timestamp of the payload is used. Accepts a UTC ISO-8601 timestamp or a UTC epoch value in milliseconds and supports dynamic outputs."
                        }
                    },
                    "description": "Settings qualifier for an InfluxDB output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "createOption": {
                            "$ref": "#/$defs/CreateType",
                            "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "logAsJSON": {
                            "type": "boolean",
                            "description": "When true, serializes modeled values as a single JSON column instead of expanding to multiple columns."
                        },
                        "table": {
                            "type": "string",
                            "description": "Name of the database table to write to"
                        },
                        "tableCacheInterval": {
                            "$ref": "#/$defs/Interval",
                            "description": "Optional interval controlling how long table metadata is cached. Useful when the table schema is managed externally and may change."
                        },
                        "whereColumn": {
                            "type": "string",
                            "description": "Specifies the body of the WHERE clause used to filter updated records when Write Type is update or upsert. Supports dynamic outputs."
                        },
                        "writeType": {
                            "$ref": "#/$defs/WriteOperation",
                            "description": "Write operation to perform: insert, update, or upsert."
                        }
                    },
                    "description": "Settings qualifier for a generic SQL/JDBC output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "caseSensitive": {
                            "type": "boolean",
                            "description": "When true, treats table and column names as case sensitive"
                        },
                        "createOption": {
                            "$ref": "#/$defs/CreateType",
                            "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "logAsJSON": {
                            "type": "boolean",
                            "description": "When true, serializes modeled values as a single JSON column instead of expanding to multiple columns."
                        },
                        "table": {
                            "type": "string",
                            "description": "Name of the database table to write to"
                        },
                        "tableCacheInterval": {
                            "$ref": "#/$defs/Interval",
                            "description": "Optional interval controlling how long table metadata is cached. Useful when the table schema is managed externally and may change."
                        },
                        "whereColumn": {
                            "type": "string",
                            "description": "Specifies the body of the WHERE clause used to filter updated records when Write Type is update or upsert. Supports dynamic outputs."
                        },
                        "writeType": {
                            "$ref": "#/$defs/WriteOperation",
                            "description": "Write operation to perform: insert, update, or upsert."
                        }
                    },
                    "description": "Settings qualifier for a Snowflake SQL output"
                },
                {
                    "anyOf": [
                        {
                            "type": "object",
                            "properties": {
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "createHypertable": {
                                    "type": "boolean",
                                    "description": "When true, creates a TimescaleDB hypertable for the configured table if it does not already exist."
                                },
                                "createOption": {
                                    "$ref": "#/$defs/CreateType",
                                    "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "logAsJSON": {
                                    "type": "boolean",
                                    "description": "When true, serializes modeled values as a single JSON column instead of expanding to multiple columns."
                                },
                                "partitionBy": {
                                    "type": "string",
                                    "description": "Column used to partition the hypertable."
                                },
                                "partitionNumber": {
                                    "type": "integer",
                                    "description": "Number of partitions to create when partitioning by integer space."
                                },
                                "primaryKey": {
                                    "type": "string",
                                    "description": "Optional comma-separated list of columns to use as the hypertable primary key."
                                },
                                "table": {
                                    "type": "string",
                                    "description": "Name of the database table to write to"
                                },
                                "tableCacheInterval": {
                                    "$ref": "#/$defs/Interval",
                                    "description": "Optional interval controlling how long table metadata is cached. Useful when the table schema is managed externally and may change."
                                },
                                "whereColumn": {
                                    "type": "string",
                                    "description": "Specifies the body of the WHERE clause used to filter updated records when Write Type is update or upsert. Supports dynamic outputs."
                                },
                                "writeType": {
                                    "$ref": "#/$defs/WriteOperation",
                                    "description": "Write operation to perform: insert, update, or upsert."
                                },
                                "partitionType": {
                                    "const": "integer"
                                }
                            },
                            "description": "Settings qualifier for a TimescaleDB hypertable partitioned by integer space",
                            "required": [
                                "partitionType"
                            ]
                        },
                        {
                            "type": "object",
                            "properties": {
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "createHypertable": {
                                    "type": "boolean",
                                    "description": "When true, creates a TimescaleDB hypertable for the configured table if it does not already exist."
                                },
                                "createOption": {
                                    "$ref": "#/$defs/CreateType",
                                    "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "logAsJSON": {
                                    "type": "boolean",
                                    "description": "When true, serializes modeled values as a single JSON column instead of expanding to multiple columns."
                                },
                                "partitionBy": {
                                    "type": "string",
                                    "description": "Column used to partition the hypertable."
                                },
                                "partitionInterval": {
                                    "$ref": "#/$defs/Interval",
                                    "description": "Time interval per chunk when partitioning by time."
                                },
                                "primaryKey": {
                                    "type": "string",
                                    "description": "Optional comma-separated list of columns to use as the hypertable primary key."
                                },
                                "table": {
                                    "type": "string",
                                    "description": "Name of the database table to write to"
                                },
                                "tableCacheInterval": {
                                    "$ref": "#/$defs/Interval",
                                    "description": "Optional interval controlling how long table metadata is cached. Useful when the table schema is managed externally and may change."
                                },
                                "whereColumn": {
                                    "type": "string",
                                    "description": "Specifies the body of the WHERE clause used to filter updated records when Write Type is update or upsert. Supports dynamic outputs."
                                },
                                "writeType": {
                                    "$ref": "#/$defs/WriteOperation",
                                    "description": "Write operation to perform: insert, update, or upsert."
                                },
                                "partitionType": {
                                    "const": "timespan"
                                }
                            },
                            "description": "Settings qualifier for a TimescaleDB hypertable partitioned by time interval",
                            "required": [
                                "partitionType"
                            ]
                        }
                    ],
                    "properties": {}
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "header": {
                            "description": "Optional list of Kafka headers to attach to each message.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "key": {
                            "type": "string",
                            "description": "The key to use for the message (optional). Keys influence partitioning and grouping."
                        },
                        "topic": {
                            "type": "string",
                            "description": "The Kafka topic to publish messages to."
                        }
                    },
                    "description": "Settings qualifier for a Kafka output"
                },
                {
                    "type": "object",
                    "properties": {
                        "bitLength": {
                            "type": "integer",
                            "description": "Optional bit length per value: 16, 32, or 64"
                        },
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "count": {
                            "type": "integer",
                            "description": "Number of consecutive registers or coils to write"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "startAddress": {
                            "type": "string",
                            "description": "Starting Modbus address to write to"
                        },
                        "treatAsSigned": {
                            "type": "boolean",
                            "description": "When true, treats numeric values as signed"
                        },
                        "unitId": {
                            "type": "integer",
                            "description": "Modbus unit identifier (slave id)"
                        }
                    },
                    "description": "Settings qualifier for a Modbus TCP output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "namedRoot": {
                            "type": "boolean",
                            "description": "When true, uses the event name as the root object in the payload."
                        },
                        "qos": {
                            "type": "string",
                            "enum": [
                                "AtMostOnce",
                                "AtLeastOnce",
                                "ExactlyOnce"
                            ],
                            "description": "Quality of Service level for MQTT messages."
                        },
                        "retained": {
                            "type": "boolean",
                            "description": "When true, publishes messages as retained."
                        },
                        "template": {
                            "type": "string",
                            "description": "Optional template used to format the payload."
                        },
                        "topic": {
                            "type": "string",
                            "description": "MQTT topic to publish messages to."
                        }
                    },
                    "description": "Settings qualifier for an MQTT output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "headers": {
                            "description": "Optional NATS headers (name/value pairs) to include on each message when headers are enabled.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "includeHeaders": {
                            "type": "boolean",
                            "description": "When true, attaches the configured headers to each published message."
                        },
                        "streamName": {
                            "type": "string",
                            "description": "Optional JetStream stream name. Required when JetStream is enabled and the subject is not already bound to a stream."
                        },
                        "subject": {
                            "type": "string",
                            "description": "The NATS subject to publish messages to."
                        },
                        "useJetStream": {
                            "type": "boolean",
                            "description": "When true, publishes via JetStream rather than core NATS."
                        }
                    },
                    "description": "Settings qualifier for a NATS output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "browseVariableNodes": {
                            "type": "boolean",
                            "description": "When true, browses variable nodes beneath the identifier when creating writes"
                        },
                        "cacheInterval": {
                            "type": "string",
                            "description": "Cache interval controlling how often values are refreshed from the OPC UA server"
                        },
                        "dataType": {
                            "type": "string",
                            "description": "Requested OPC UA data type for the write"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "identifier": {
                            "anyOf": [
                                {
                                    "$ref": "#/$defs/OpcUaNodeIdentifier",
                                    "description": "OPC UA node identifier for the target tag"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "relativePath": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "uri": {
                                                        "type": "string"
                                                    }
                                                }
                                            }
                                        },
                                        "startNode": {
                                            "$ref": "#/$defs/OpcUaNodeIdentifier"
                                        },
                                        "type": {
                                            "const": "Path"
                                        }
                                    },
                                    "required": [
                                        "type"
                                    ],
                                    "description": "OPC UA node identifier for the target tag"
                                }
                            ]
                        },
                        "maxDepth": {
                            "type": "integer",
                            "description": "Maximum branch depth when expanding complex values into OPC UA nodes"
                        },
                        "namedRoot": {
                            "type": "boolean",
                            "description": "When true, uses the event name as the root node name"
                        }
                    },
                    "description": "Settings qualifier for an OPC UA tag output"
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "options": {
                            "type": "object",
                            "properties": {
                                "create": {
                                    "type": "boolean",
                                    "description": "When true, creates missing assets or points"
                                },
                                "database": {
                                    "type": "string",
                                    "description": "Target PI AFSDK database (for asset writes)"
                                },
                                "delimiter": {
                                    "type": "string",
                                    "description": "Optional delimiter for point names in the path"
                                },
                                "name": {
                                    "type": "string",
                                    "description": "Optional asset or point name"
                                },
                                "path": {
                                    "type": "string",
                                    "description": "Optional PI AFSDK path to the asset or point"
                                },
                                "pointSource": {
                                    "type": "string",
                                    "description": "Optional PI point source"
                                },
                                "timestamp": {
                                    "type": "string",
                                    "description": "Optional payload field to use as the PI timestamp"
                                },
                                "updateOption": {
                                    "type": "string",
                                    "description": "PI AFSDK update option (Insert, Replace, Remove, etc.)"
                                }
                            },
                            "description": "Type-specific PI AFSDK write options"
                        }
                    },
                    "description": "Settings qualifier for an OSIsoft PI AFSDK output"
                },
                {
                    "type": "object",
                    "properties": {
                        "bodyType": {
                            "type": "string",
                            "enum": [
                                "defaultjson",
                                "none",
                                "form_data",
                                "x_www_form_urlencoded",
                                "raw",
                                "binary"
                            ],
                            "description": "Controls how the data is sent as part of the HTTP request (for example none, form-data, form urlencoded, template, or binary)."
                        },
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "endpointURL": {
                            "type": "string",
                            "description": "The endpoint to send the request to (for example /routes/myendpoint). A leading / is not required but recommended."
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "header": {
                            "description": "Optional list of HTTP headers to include on each request. These are added to the connection-level headers.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "method": {
                            "type": "string",
                            "enum": [
                                "GET",
                                "POST",
                                "PUT",
                                "PATCH",
                                "DELETE"
                            ],
                            "description": "HTTP method to use when sending the request."
                        },
                        "template": {
                            "type": "string",
                            "description": "Optional template used to build the request body from the event value when Body Type is Template."
                        }
                    },
                    "description": "Settings qualifier for a REST Client output"
                },
                {
                    "anyOf": [
                        {
                            "type": "object",
                            "properties": {
                                "baseLocation": {
                                    "type": "string",
                                    "description": "For Iceberg tables, the base storage location"
                                },
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "caseSensitive": {
                                    "type": "boolean",
                                    "description": "When true, treats table and column names as case sensitive and wraps them in quotes when writing."
                                },
                                "catalog": {
                                    "type": "string",
                                    "description": "For Iceberg tables, the catalog name"
                                },
                                "createOption": {
                                    "$ref": "#/$defs/CreateType",
                                    "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                                },
                                "externalVolume": {
                                    "type": "string",
                                    "description": "For Iceberg tables, the external volume name"
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "table": {
                                    "type": "string",
                                    "description": "The name of the table to write to."
                                },
                                "type": {
                                    "const": "iceberg"
                                }
                            },
                            "description": "Settings qualifier for a Snowflake-managed Iceberg table output",
                            "required": [
                                "type"
                            ]
                        },
                        {
                            "type": "object",
                            "properties": {
                                "breakupArrays": {
                                    "type": "boolean"
                                },
                                "caseSensitive": {
                                    "type": "boolean",
                                    "description": "When true, treats table and column names as case sensitive and wraps them in quotes when writing."
                                },
                                "createOption": {
                                    "$ref": "#/$defs/CreateType",
                                    "description": "Controls how the table definition is managed: Off, Create, or Create & Update."
                                },
                                "filterList": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "table": {
                                    "type": "string",
                                    "description": "The name of the table to write to."
                                },
                                "type": {
                                    "const": "snowflake"
                                }
                            },
                            "description": "Settings qualifier for a standard Snowflake table output"
                        }
                    ],
                    "properties": {}
                },
                {
                    "type": "object",
                    "properties": {
                        "breakupArrays": {
                            "type": "boolean"
                        },
                        "deviceId": {
                            "type": "string",
                            "description": "Optional Sparkplug device id"
                        },
                        "edgeNodeId": {
                            "type": "string",
                            "description": "Optional Sparkplug edge node id"
                        },
                        "filterList": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "groupId": {
                            "type": "string",
                            "description": "Optional Sparkplug group id"
                        },
                        "messageType": {
                            "type": "string",
                            "description": "Sparkplug message type: Data or Cmd"
                        },
                        "metricName": {
                            "type": "string",
                            "description": "Optional metric name to publish"
                        },
                        "publishType": {
                            "type": "string",
                            "description": "Publish as a single Tag or as a Template"
                        },
                        "template": {
                            "type": "boolean",
                            "description": "When true, publishes the metric as a Sparkplug template instead of a single tag"
                        },
                        "timestamp": {
                            "type": "string",
                            "description": "Optional payload field to use as the metric timestamp"
                        }
                    },
                    "description": "Settings qualifier for a Sparkplug B output"
                }
            ]
        },
        "type": {
            "type": "string"
        }
    },
    "oneOf": [
        {"properties": {"type": {"const": "aws.kinesisdatastream"}}},
        {"properties": {"type": {"const": "aws.kinesisfirehose"}}},
        {"properties": {"type": {"const": "aws.iotsitewise"}}},
        {"properties": {"type": {"const": "aws.s3"}}},
        {"properties": {"type": {"const": "aws.s3tables"}}},
        {"properties": {"type": {"const": "azure.blob"}}},
        {"properties": {"type": {"const": "azure.eventhub"}}},
        {"properties": {"type": {"const": "azure.iotedge"}}},
        {"properties": {"type": {"const": "azure.iothub"}}},
        {"properties": {"type": {"const": "azure.onelake"}}},
        {"properties": {"type": {"const": "databricks.client"}}},
        {"properties": {"type": {"const": "databricks.zerobus"}}},
        {"properties": {"type": {"const": "file"}}},
        {"properties": {"type": {"const": "file.csv"}}},
        {"properties": {"type": {"const": "file.parquet"}}},
        {"properties": {"type": {"const": "google.pubsub"}}},
        {"properties": {"type": {"const": "inductive.ignition"}}},
        {"properties": {"type": {"const": "influxdb"}}},
        {"properties": {"type": {"const": "jdbc"}}},
        {"properties": {"type": {"const": "jdbc.snowflake"}}},
        {"properties": {"type": {"const": "jdbc.timescaledb"}}},
        {"properties": {"type": {"const": "kafka"}}},
        {"properties": {"type": {"const": "modbus.tcp"}}},
        {"properties": {"type": {"const": "mqtt"}}},
        {"properties": {"type": {"const": "nats"}}},
        {"properties": {"type": {"const": "opc.tcp"}}},
        {"properties": {"type": {"const": "osisoft.afsdk"}}},
        {"properties": {"type": {"const": "rest.client"}}},
        {"properties": {"type": {"const": "snowflake"}}},
        {"properties": {"type": {"const": "sparkplug"}}}
    ]
}