{
    "$id": "https://schemas.highbyte.com/intelligencehub/pipeline/4.5.0.json",
    "$defs": {
        "ConditionReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "params": {
                    "$ref": "#/$defs/ObjectNode"
                },
                "path": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "type": {
                    "const": "Condition"
                }
            },
            "required": [
                "type"
            ]
        },
        "DictionaryReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "type": {
                    "const": "Dictionary"
                }
            },
            "required": [
                "type"
            ]
        },
        "DynamicConditionReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "params": {
                    "$ref": "#/$defs/ObjectNode"
                },
                "path": {
                    "type": "string"
                },
                "reference": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "const": "ResolvedReference"
                        }
                    },
                    "required": [
                        "type"
                    ]
                },
                "type": {
                    "const": "DynamicCondition"
                }
            },
            "required": [
                "type"
            ]
        },
        "EmptyReference": {
            "type": "object",
            "properties": {
                "type": {
                    "const": "Empty"
                }
            }
        },
        "FileEncodingType": {
            "type": "string",
            "enum": [
                "Binary",
                "Auto",
                "UTF_8",
                "UTF_16BE",
                "UTF_16LE",
                "US_ASCII",
                "ISO_8859_1"
            ]
        },
        "IncomingType": {
            "type": "string",
            "enum": [
                "String",
                "File"
            ]
        },
        "InlineParameters": {
            "type": "object",
            "properties": {
                "model": {
                    "allOf": [
                        {
                            "type": "object",
                            "properties": {
                                "attributes": {
                                    "description": "The attributes defined for this model.",
                                    "type": "array",
                                    "items": {
                                        "anyOf": [
                                            {
                                                "$ref": "#/$defs/ModeledAttribute"
                                            },
                                            {
                                                "$ref": "#/$defs/InternalTypeAttribute"
                                            },
                                            {
                                                "$ref": "#/$defs/ObjectModelAttribute-2"
                                            }
                                        ]
                                    }
                                },
                                "description": {
                                    "type": "string",
                                    "description": "Description of the configuration element."
                                },
                                "extendsModel": {
                                    "type": "string",
                                    "description": "The name of the model this one extends, if any."
                                },
                                "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."
                                },
                                "tags": {
                                    "description": "Tags for organizing and filtering configuration elements.",
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            },
                            "description": "Represents a configured model, including its attributes and inheritance."
                        },
                        {
                            "description": "Embedded model definition for inline parameters."
                        }
                    ]
                },
                "type": {
                    "const": "inline"
                }
            },
            "description": "Represents inline parameters for a pipeline trigger or stage, including an embedded model definition.",
            "required": [
                "type"
            ]
        },
        "InputReference": {
            "type": "object",
            "properties": {
                "connectionName": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "params": {
                    "$ref": "#/$defs/ObjectNode"
                },
                "path": {
                    "type": "string"
                },
                "type": {
                    "const": "Input"
                }
            },
            "required": [
                "type"
            ]
        },
        "InstanceAttribute": {
            "type": "object",
            "properties": {
                "attributes": {
                    "description": "Nested child attributes. Mirrors the structure of the referenced Model schema.",
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/InstanceAttribute"
                    }
                },
                "defaultValue": {
                    "$ref": "#/$defs/JsonNode",
                    "description": "Default value applied when the expression yields no result."
                },
                "description": {
                    "type": "string",
                    "description": "Description of the configuration element."
                },
                "expression": {
                    "anyOf": [
                        {
                            "allOf": [
                                {
                                    "type": "object",
                                    "properties": {
                                        "expression": {
                                            "type": "string",
                                            "description": "The JavaScript source to evaluate. A return statement is required."
                                        },
                                        "type": {
                                            "const": "JavaScript"
                                        }
                                    },
                                    "description": "An expression that evaluates a JavaScript snippet to produce the attribute's value. Used when the value requires logic, transformation, or computation beyond a simple reference.",
                                    "required": [
                                        "type"
                                    ]
                                },
                                {
                                    "description": "The expression that produces this attribute's value. May be a JavaScript expression that returns a value, a reference to another field or input, or a pipeline stage reference."
                                }
                            ]
                        },
                        {
                            "allOf": [
                                {
                                    "type": "object",
                                    "properties": {
                                        "reference": {
                                            "anyOf": [
                                                {
                                                    "$ref": "#/$defs/EmptyReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/InstanceReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/PipelineReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/InputReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/ConditionReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/DynamicConditionReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/SystemReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/DictionaryReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/LegacyPipelineReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                },
                                                {
                                                    "$ref": "#/$defs/UnresolvedReference",
                                                    "description": "The reference to resolve. Supports Input, Instance, Condition, and System reference types and may include a path into the referenced value."
                                                }
                                            ]
                                        },
                                        "type": {
                                            "const": "Reference"
                                        }
                                    },
                                    "description": "An expression that resolves a reference to produce the attribute's value directly from an Input, Instance, Condition, or System value."
                                },
                                {
                                    "description": "The expression that produces this attribute's value. May be a JavaScript expression that returns a value, a reference to another field or input, or a pipeline stage reference."
                                }
                            ]
                        },
                        {
                            "allOf": [
                                {
                                    "type": "object",
                                    "properties": {
                                        "stageReference": {
                                            "type": "string",
                                            "description": "Simple event or System reference identifying the value to pull from an earlier pipeline stage."
                                        },
                                        "type": {
                                            "const": "PipelineStageReference"
                                        }
                                    },
                                    "description": "An expression that references a value produced by an earlier pipeline stage. Used inside the modeling stage of a pipeline.",
                                    "required": [
                                        "type"
                                    ]
                                },
                                {
                                    "description": "The expression that produces this attribute's value. May be a JavaScript expression that returns a value, a reference to another field or input, or a pipeline stage reference."
                                }
                            ]
                        }
                    ]
                },
                "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."
                }
            }
        },
        "InstanceReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "params": {
                    "$ref": "#/$defs/ObjectNode"
                },
                "path": {
                    "type": "string"
                },
                "type": {
                    "const": "Instance"
                }
            },
            "required": [
                "type"
            ]
        },
        "InternalTypeAttribute": {
            "type": "object",
            "properties": {
                "array": {
                    "type": "boolean",
                    "description": "Whether the attribute is an array."
                },
                "defaultValue": {
                    "$ref": "#/$defs/JsonNode",
                    "description": "The default value for the attribute."
                },
                "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."
                },
                "internalType": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the configuration element."
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Whether the attribute can be null."
                },
                "required": {
                    "type": "boolean",
                    "description": "Whether the attribute is required."
                },
                "attributeType": {
                    "const": "Internal"
                }
            },
            "required": [
                "attributeType"
            ]
        },
        "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."
        },
        "JsonNode": {
            "type": "object"
        },
        "LegacyPipelineReference": {
            "type": "object",
            "properties": {
                "legacyParams": {
                    "$ref": "#/$defs/JsonNode"
                },
                "name": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "type": {
                    "const": "LegacyPipeline"
                }
            },
            "required": [
                "type"
            ]
        },
        "ModeledAttribute": {
            "type": "object",
            "properties": {
                "array": {
                    "type": "boolean",
                    "description": "Whether the attribute is an array."
                },
                "defaultValue": {
                    "$ref": "#/$defs/JsonNode",
                    "description": "The default value for the attribute."
                },
                "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."
                },
                "model": {
                    "type": "string",
                    "description": "The name of the referenced model for this attribute."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the configuration element."
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Whether the attribute can be null."
                },
                "required": {
                    "type": "boolean",
                    "description": "Whether the attribute is required."
                },
                "attributeType": {
                    "const": "Modeled"
                }
            },
            "description": "Represents a modeled attribute, referencing another model by name.",
            "required": [
                "attributeType"
            ]
        },
        "ObjectModelAttribute-1": {
            "type": "object",
            "properties": {
                "array": {
                    "type": "boolean",
                    "description": "Whether the attribute is an array."
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/$defs/ModeledAttribute"
                            },
                            {
                                "$ref": "#/$defs/InternalTypeAttribute"
                            },
                            {
                                "$ref": "#/$defs/ObjectModelAttribute-2"
                            }
                        ]
                    }
                },
                "defaultValue": {
                    "$ref": "#/$defs/JsonNode",
                    "description": "The default value for the attribute."
                },
                "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."
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Whether the attribute can be null."
                },
                "required": {
                    "type": "boolean",
                    "description": "Whether the attribute is required."
                }
            }
        },
        "ObjectModelAttribute-2": {
            "$ref": "#/$defs/ObjectModelAttribute-1",
            "type": "object",
            "properties": {
                "attributeType": {
                    "const": "Object"
                }
            },
            "required": [
                "attributeType"
            ]
        },
        "ObjectNode": {
            "type": "object"
        },
        "OutgoingType": {
            "type": "string",
            "enum": [
                "String",
                "File"
            ]
        },
        "PipelineReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "params": {
                    "$ref": "#/$defs/ObjectNode"
                },
                "path": {
                    "type": "string"
                },
                "type": {
                    "const": "Pipeline"
                }
            },
            "required": [
                "type"
            ]
        },
        "SmartQuery": {
            "type": "object",
            "properties": {
                "from": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "select": {
                    "type": "object",
                    "properties": {
                        "as": {
                            "type": "string",
                            "enum": [
                                "Hierarchy",
                                "List"
                            ]
                        },
                        "delim": {
                            "type": "string"
                        },
                        "what": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "value",
                                    "path",
                                    "name",
                                    "model",
                                    "timestamp"
                                ]
                            }
                        }
                    }
                },
                "where": {
                    "type": "string"
                }
            }
        },
        "StageDisplay": {
            "type": "object",
            "properties": {
                "metadata": {
                    "type": "object",
                    "properties": {
                        "collapsed": {
                            "type": "object",
                            "properties": {
                                "height": {
                                    "type": "integer"
                                },
                                "width": {
                                    "type": "integer"
                                }
                            }
                        },
                        "parent": {
                            "type": "string"
                        }
                    }
                },
                "position": {
                    "type": "object",
                    "properties": {
                        "x": {
                            "type": "integer"
                        },
                        "y": {
                            "type": "integer"
                        }
                    }
                },
                "size": {
                    "type": "object",
                    "properties": {
                        "height": {
                            "type": "integer"
                        },
                        "width": {
                            "type": "integer"
                        }
                    }
                }
            }
        },
        "SystemReference": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "type": {
                    "const": "System"
                }
            },
            "required": [
                "type"
            ]
        },
        "UnresolvedReference": {
            "type": "object",
            "properties": {
                "ioName": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "params": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "refType": {
                    "type": "string"
                },
                "type": {
                    "const": "Advanced"
                }
            },
            "required": [
                "type"
            ]
        },
        "WriteReturn": {
            "type": "string",
            "enum": [
                "completion",
                "ignore"
            ],
            "description": "Specifies the behavior of the write operation in the pipeline. Controls whether the stage waits for completion or ignores the result."
        }
    },
    "type": "object",
    "properties": {
        "description": {
            "type": "string",
            "description": "Description of the configuration element."
        },
        "errorHandler": {
            "anyOf": [
                {
                    "allOf": [
                        {
                            "type": "object",
                            "description": "Default error handler configuration for pipelines. Handles errors using the default strategy.",
                            "properties": {
                                "type": {
                                    "const": "default"
                                }
                            }
                        },
                        {
                            "description": "Configuration for handling errors that occur during pipeline execution. This allows you to define custom behavior for error scenarios, such as retry logic or notifications."
                        }
                    ]
                },
                {
                    "allOf": [
                        {
                            "type": "object",
                            "properties": {
                                "reference": {
                                    "type": "string",
                                    "description": "Reference to the external error handler."
                                },
                                "type": {
                                    "const": "external"
                                }
                            },
                            "description": "External error handler configuration for pipelines. Delegates error handling to an external reference.",
                            "required": [
                                "type"
                            ]
                        },
                        {
                            "description": "Configuration for handling errors that occur during pipeline execution. This allows you to define custom behavior for error scenarios, such as retry logic or notifications."
                        }
                    ]
                }
            ]
        },
        "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."
        },
        "inputStages": {
            "description": "The names of the stages that are the input stages for the pipeline. This is used to identify which stages are considered entry points for the pipeline execution.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "name": {
            "type": "string",
            "description": "Name of the configuration element."
        },
        "stages": {
            "description": "List of stage configurations for the pipeline. Each stage defines a specific processing step in the pipeline, including its inputs, outputs, and behavior.",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "config": {
                        "anyOf": [
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "filterList": {
                                                "description": "List of attribute filters to apply.",
                                                "type": "array",
                                                "items": {
                                                    "anyOf": [
                                                        {
                                                            "type": "object",
                                                            "properties": {
                                                                "filterText": {
                                                                    "type": "string",
                                                                    "description": "The regular expression pattern used to match pipeline data."
                                                                },
                                                                "recursive": {
                                                                    "type": "boolean",
                                                                    "description": "If true, the filter is applied recursively to all nested data elements."
                                                                },
                                                                "filterType": {
                                                                    "const": "regexFilter"
                                                                }
                                                            },
                                                            "description": "Defines a filter that matches pipeline data using a regular expression. Supports recursive matching for nested data structures.",
                                                            "required": [
                                                                "filterType"
                                                            ]
                                                        },
                                                        {
                                                            "type": "object",
                                                            "properties": {
                                                                "filterText": {
                                                                    "type": "string",
                                                                    "description": "The text value that pipeline data must start with to match this filter."
                                                                },
                                                                "recursive": {
                                                                    "type": "boolean",
                                                                    "description": "If true, the filter is applied recursively to all nested data elements."
                                                                },
                                                                "filterType": {
                                                                    "const": "startsWithFilter"
                                                                }
                                                            },
                                                            "description": "Defines a filter that matches pipeline data starting with a specific text value. Supports recursive matching for nested data structures.",
                                                            "required": [
                                                                "filterType"
                                                            ]
                                                        },
                                                        {
                                                            "type": "object",
                                                            "properties": {
                                                                "filterText": {
                                                                    "type": "string",
                                                                    "description": "The text value that pipeline data must end with to match this filter."
                                                                },
                                                                "recursive": {
                                                                    "type": "boolean",
                                                                    "description": "If true, the filter is applied recursively to all nested data elements."
                                                                },
                                                                "filterType": {
                                                                    "const": "endsWithFilter"
                                                                }
                                                            },
                                                            "description": "Defines a filter that matches pipeline data ending with a specific text value. Supports recursive matching for nested data structures.",
                                                            "required": [
                                                                "filterType"
                                                            ]
                                                        },
                                                        {
                                                            "type": "object",
                                                            "properties": {
                                                                "filterText": {
                                                                    "type": "string",
                                                                    "description": "The text value that pipeline data must contain to match this filter."
                                                                },
                                                                "recursive": {
                                                                    "type": "boolean",
                                                                    "description": "If true, the filter is applied recursively to all nested data elements."
                                                                },
                                                                "filterType": {
                                                                    "const": "containsFilter"
                                                                }
                                                            },
                                                            "description": "Defines a filter that matches pipeline data containing a specific text value. Supports recursive matching for nested data structures.",
                                                            "required": [
                                                                "filterType"
                                                            ]
                                                        },
                                                        {
                                                            "type": "object",
                                                            "properties": {
                                                                "filterText": {
                                                                    "type": "string",
                                                                    "description": "The exact path in the data structure to match for this filter."
                                                                },
                                                                "filterType": {
                                                                    "const": "exactPathFilter"
                                                                }
                                                            },
                                                            "description": "Defines a filter that matches pipeline data at an exact path. Used for precise data selection within nested structures."
                                                        }
                                                    ]
                                                }
                                            },
                                            "filterOption": {
                                                "type": "string",
                                                "enum": [
                                                    "INCLUDE",
                                                    "EXCLUDE"
                                                ],
                                                "description": "Option for filtering attributes (e.g., include or exclude)."
                                            },
                                            "metadataKey": {
                                                "type": "string",
                                                "description": "Key to store retained metadata."
                                            },
                                            "retainAsMetadata": {
                                                "type": "boolean",
                                                "description": "Whether to retain filtered attributes as metadata."
                                            },
                                            "type": {
                                                "const": ".AttributeFilterConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for filtering attributes from pipeline data based on specified criteria. Use this stage to include or exclude attributes and optionally retain them as metadata for downstream use.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "breakupType": {
                                                "allOf": [
                                                    {
                                                        "type": "string",
                                                        "enum": [
                                                            "array",
                                                            "object",
                                                            "all"
                                                        ],
                                                        "description": "Specifies how the Breakup stage splits data: as arrays, objects, or both. Use this to control how complex data structures are decomposed for downstream processing."
                                                    },
                                                    {
                                                        "description": "Type of data types to breakup (e.g., array, object)."
                                                    }
                                                ]
                                            },
                                            "depth": {
                                                "type": "integer",
                                                "description": "Depth to which breakup should occur."
                                            },
                                            "type": {
                                                "const": ".BreakupConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for splitting objects or arrays into multiple pipeline events, each containing a separate value. Use this stage to normalize nested data for downstream processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "delimiter": {
                                                "type": "string",
                                                "description": "Specifies the delimiter character used to separate values in the CSV output."
                                            },
                                            "outgoingType": {
                                                "$ref": "#/$defs/OutgoingType",
                                                "description": "Specifies the output type for formatted data. Options include String or File, depending on how the data should be exported."
                                            },
                                            "type": {
                                                "const": ".CSVFormatConfig"
                                            }
                                        },
                                        "description": "Configuration for formatting pipeline data as CSV. Use this stage to serialize data for export, integration, or storage in CSV format.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "delimiter": {
                                                "type": "string",
                                                "description": "Delimiter character used to separate values in the CSV input."
                                            },
                                            "encoding": {
                                                "$ref": "#/$defs/FileEncodingType",
                                                "description": "Specifies the encoding used to decode incoming files. Supports automatic detection and explicit encoding selection."
                                            },
                                            "escape": {
                                                "type": "string",
                                                "description": "Escape character used in the CSV input."
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "headers": {
                                                "description": "List of header names for the CSV columns. Used to map CSV fields to pipeline data.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "incomingType": {
                                                "$ref": "#/$defs/IncomingType",
                                                "description": "Specifies the type of incoming data to parse, such as String or File."
                                            },
                                            "quote": {
                                                "type": "string",
                                                "description": "Quote character used to enclose values in the CSV input."
                                            },
                                            "type": {
                                                "const": ".CSVParserConfig"
                                            }
                                        },
                                        "description": "Configuration for parsing CSV data in the pipeline. Use this stage to ingest, validate, and transform CSV files or strings for further processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "delay": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Interval to delay pipeline events."
                                            },
                                            "type": {
                                                "const": ".DelayConfig"
                                            }
                                        },
                                        "description": "The Delay stage introduces a delay to pipeline events. Use this stage to pause or throttle data flow for a specified interval.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "connectionReference": {
                                                "type": "string",
                                                "description": "Reference to the connection used for writing data. Determines the target system or endpoint. This should be formatted: \"{{Connection.MyConnection}}\""
                                            },
                                            "connectionType": {
                                                "type": "string"
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "qualifier": {
                                                "$ref": "#/$defs/ObjectNode",
                                                "description": "IntelligenceHub Output Schema object specifying the dynamic write operation."
                                            },
                                            "qualifierExpression": {
                                                "type": "string",
                                                "description": "Javascript expression used to generate the qualifier dynamically. Enables flexible addressing based on pipeline data."
                                            },
                                            "writeReturn": {
                                                "$ref": "#/$defs/WriteReturn",
                                                "description": "Controls whether the stage waits for completion or ignores the result."
                                            },
                                            "type": {
                                                "const": ".DynamicWriteConfig"
                                            }
                                        },
                                        "description": "The Dynamic Write stage writes data to a target using a dynamically generated qualifier, allowing flexible routing and addressing. Use this stage to write to different destinations based on expressions or pipeline context.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "errorMessage": {
                                                "type": "string",
                                                "description": "The error message to be generated when this stage is executed. This message can be used for diagnostics or to halt pipeline execution."
                                            },
                                            "type": {
                                                "const": ".ErrorConfig"
                                            }
                                        },
                                        "description": "The Error stage generates a custom error message in the pipeline. Use this stage to signal errors, halt processing, or provide diagnostic information when a specific condition is met.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "delimiter": {
                                                "type": "string",
                                                "description": "Specifies the delimiter used to flatten the hierarchy. The delimiter separates nested keys in the resulting flat structure."
                                            },
                                            "type": {
                                                "const": ".FlattenConfig"
                                            }
                                        },
                                        "description": "The Flatten stage converts a hierarchical complex data value into a flat structure using a configurable delimiter. Use this stage to simplify nested data for downstream processing or integration.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "loopOutputs": {
                                                "description": "Specifies the outputs generated by each loop iteration. Used to route data from each cycle.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "stageTimeout": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Maximum duration for the loop stage to execute before timing out. Prevents infinite or excessively long loops."
                                            },
                                            "type": {
                                                "const": ".ForEachLoopConfig"
                                            }
                                        },
                                        "description": "The ForEach Loop stage iterates over each element in a collection, executing the contained pipeline logic for every item. Use this stage to process arrays or lists in your data stream.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "description": "The GZip stage compresses pipeline data using the GZip algorithm, reducing data size for transmission or storage.",
                                        "properties": {
                                            "type": {
                                                "const": ".GZipConfig"
                                            }
                                        },
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "transformExpression": {
                                                "type": "string",
                                                "description": "Expression used to transform pipeline data."
                                            },
                                            "type": {
                                                "const": ".JavaScriptTransformConfig"
                                            }
                                        },
                                        "description": "The JavaScript Transform stage applies custom JavaScript logic to pipeline data. Use this stage to perform advanced transformations, calculations, or data enrichment using JavaScript code.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "outgoingType": {
                                                "$ref": "#/$defs/OutgoingType",
                                                "description": "Specifies the output type for formatted data. Options include String or File, depending on how the data should be exported."
                                            },
                                            "type": {
                                                "const": ".JSONFormatConfig"
                                            }
                                        },
                                        "description": "The JSON Format stage serializes pipeline data into JSON format. Use this stage to export, store, or transmit data as JSON for integration with other systems.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "transformExpression": {
                                                "type": "string",
                                                "description": "Expression used to transform pipeline data."
                                            },
                                            "type": {
                                                "const": ".JSONataTransformConfig"
                                            }
                                        },
                                        "description": "The JSONata Transform stage applies JSONata expressions to pipeline data. Use this stage for powerful, declarative transformations and data extraction from JSON structures.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "encoding": {
                                                "$ref": "#/$defs/FileEncodingType",
                                                "description": "Specifies the encoding used to decode incoming files. Supports automatic detection and explicit encoding selection."
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "incomingType": {
                                                "$ref": "#/$defs/IncomingType",
                                                "description": "Specifies the type of incoming data to parse, such as String or File."
                                            },
                                            "type": {
                                                "const": ".JSONParserConfig"
                                            }
                                        },
                                        "description": "The JSON Parser stage parses incoming JSON data into pipeline objects. Use this stage to ingest, validate, and transform JSON payloads for further processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "inputValueKey": {
                                                "type": "string",
                                                "description": "Key used to identify the input value for merging. Used when input values are nested or keyed."
                                            },
                                            "inputValueLocation": {
                                                "allOf": [
                                                    {
                                                        "type": "string",
                                                        "enum": [
                                                            "child",
                                                            "exclude",
                                                            "inline"
                                                        ],
                                                        "description": "Specifies the location of input values for legacy read sources in pipeline configuration."
                                                    },
                                                    {
                                                        "description": "Specifies where the input value is located in the event structure. Controls how merging is performed."
                                                    }
                                                ]
                                            },
                                            "keyReferences": {
                                                "description": "List of references to read and merge. Each reference specifies a source to be included in the merged output.",
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "key": {
                                                            "type": "string",
                                                            "description": "The key for the data source reference. Used to identify the value in the event structure."
                                                        },
                                                        "location": {
                                                            "allOf": [
                                                                {
                                                                    "type": "string",
                                                                    "enum": [
                                                                        "child",
                                                                        "inline"
                                                                    ],
                                                                    "description": "Specifies the location of a data source in the pipeline, such as child or inline. Used to determine where references are resolved from during data mapping and merging."
                                                                },
                                                                {
                                                                    "description": "The location of the data source (e.g., child, inline). Determines where the reference is resolved from."
                                                                }
                                                            ]
                                                        },
                                                        "reference": {
                                                            "anyOf": [
                                                                {
                                                                    "$ref": "#/$defs/EmptyReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/InstanceReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/PipelineReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/InputReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/ConditionReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/DynamicConditionReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/SystemReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/DictionaryReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/LegacyPipelineReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                },
                                                                {
                                                                    "$ref": "#/$defs/UnresolvedReference",
                                                                    "description": "The reference configuration for the data source. Specifies the address or tag for the read operation."
                                                                }
                                                            ]
                                                        }
                                                    },
                                                    "description": "Represents a reference to a data source in the pipeline, including its location, key, and reference configuration. Used for mapping and merging data from different sources."
                                                }
                                            },
                                            "type": {
                                                "const": ".MergeReadConfig"
                                            }
                                        },
                                        "description": "The Merge Read stage combines multiple data sources into a single pipeline event. Use this stage to aggregate values from different references for unified processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "attributes": {
                                                "description": "List of attributes to be mapped or processed in the model.",
                                                "type": "array",
                                                "items": {
                                                    "$ref": "#/$defs/InstanceAttribute"
                                                }
                                            },
                                            "expandArray": {
                                                "type": "boolean"
                                            },
                                            "initExpression": {
                                                "type": "string",
                                                "description": "Optional JavaScript expression for initializing the model object."
                                            },
                                            "model": {
                                                "type": "string",
                                                "description": "The name of the model to use for mapping and validation."
                                            },
                                            "objectName": {
                                                "type": "string",
                                                "description": "The name of the object within the model to which data will be mapped."
                                            },
                                            "type": {
                                                "const": ".ModelConfig"
                                            }
                                        },
                                        "description": "The Modeling stage maps incoming data to a model structure, transforming, validating, and enriching data according to a defined model. Use this stage to apply a model to incoming data and ensure it conforms to the expected structure.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "additionalProperties": {
                                                "allOf": [
                                                    {
                                                        "type": "string",
                                                        "enum": [
                                                            "allow",
                                                            "fail",
                                                            "remove"
                                                        ],
                                                        "description": "Specifies how to handle additional properties not defined in the model during validation: allow, fail, or remove."
                                                    },
                                                    {
                                                        "description": "Specifies how to handle additional properties not defined in the model: allow, fail, or remove."
                                                    }
                                                ]
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "models": {
                                                "description": "List of model names to validate incoming data against.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": {
                                                "const": ".ModelValidationConfig"
                                            }
                                        },
                                        "description": "The ModelValidation stage validates incoming data against one or more models, ensuring the data conforms to the expected structure and rules. Use this stage to enforce model compliance and data integrity.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "ignoreChanges": {
                                                "description": "List of keys to ignore when tracking changes.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "inclusionList": {
                                                "description": "List of keys to include in change tracking.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "keyExpression": {
                                                "type": "string",
                                                "description": "Expression used to determine the key for change tracking."
                                            },
                                            "metadataKey": {
                                                "type": "string",
                                                "description": "Metadata key used for change tracking."
                                            },
                                            "outputMode": {
                                                "type": "string",
                                                "enum": [
                                                    "all",
                                                    "changed"
                                                ],
                                                "description": "Specifies whether to output all values or only changed values."
                                            },
                                            "persistMode": {
                                                "type": "string",
                                                "enum": [
                                                    "memory",
                                                    "disk"
                                                ],
                                                "description": "Specifies how change tracking is persisted: in memory or on disk."
                                            },
                                            "trackChanges": {
                                                "description": "List of keys to explicitly track for changes.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": {
                                                "const": ".OnChangeConfig"
                                            }
                                        },
                                        "description": "The OnChange stage filters or terminates pipeline events when receiving unchanged values. Use this stage to only process data when changes occur, reducing unnecessary processing and output.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "outgoingType": {
                                                "$ref": "#/$defs/OutgoingType",
                                                "description": "Specifies the output type for formatted data. Options include String or File, depending on how the data should be exported."
                                            },
                                            "type": {
                                                "const": ".ParquetFormatConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a Parquet format stage that serializes pipeline data into Apache Parquet format. Use this stage to export, store, or transmit data as Parquet files for efficient analytics and integration.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "encoding": {
                                                "$ref": "#/$defs/FileEncodingType",
                                                "description": "Specifies the encoding used to decode incoming files. Supports automatic detection and explicit encoding selection."
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "incomingType": {
                                                "$ref": "#/$defs/IncomingType",
                                                "description": "Specifies the type of incoming data to parse, such as String or File."
                                            },
                                            "type": {
                                                "const": ".ParquetParserConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a Parquet parser stage that parses incoming Apache Parquet files into pipeline objects. Use this stage to ingest, validate, and transform Parquet data for further processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "reference": {
                                                "anyOf": [
                                                    {
                                                        "$ref": "#/$defs/EmptyReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/InstanceReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/PipelineReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/InputReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/ConditionReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/DynamicConditionReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/SystemReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/DictionaryReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/LegacyPipelineReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/UnresolvedReference",
                                                        "description": "Reference to the data source to read from. Specifies the address or tag for the read operation."
                                                    }
                                                ]
                                            },
                                            "type": {
                                                "const": ".ReadConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a read stage that retrieves data from a specified reference. Use this stage to pull values from external sources or pipeline context for further processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "cacheLifetime": {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "enabled": {
                                                                "type": "boolean",
                                                                "description": "Whether caching is enabled for input data."
                                                            },
                                                            "interval": {
                                                                "$ref": "#/$defs/Interval",
                                                                "description": "The cache duration interval for input data."
                                                            }
                                                        },
                                                        "description": "Configuration for cache lifetime settings."
                                                    },
                                                    {
                                                        "description": "Defines how long the fetched data should be cached before refreshing."
                                                    }
                                                ]
                                            },
                                            "connectionReference": {
                                                "type": "string",
                                                "description": "Reference to the connection from which to read new input data. This should be formatted: \"{{Connection.MyConnection}}\""
                                            },
                                            "qualifier": {
                                                "$ref": "#/$defs/ObjectNode",
                                                "description": "Qualifier used to specify which data to read from the connection."
                                            },
                                            "qualifierExpression": {
                                                "type": "string",
                                                "description": "Expression to dynamically determine the qualifier."
                                            },
                                            "type": {
                                                "const": ".ReadNewInputConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a read new input stage that reads new input data from a specified connection and qualifier. Use this stage to fetch fresh data from external sources, optionally applying an expression and cache lifetime.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "description": "Defines the configuration for a return stage that terminates the pipeline and returns the current event data. Use this stage as the final step to output results from the pipeline.",
                                        "properties": {
                                            "type": {
                                                "const": ".ReturnConfig"
                                            }
                                        },
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "timeout": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Maximum time to wait before outputting the buffer, even if not full. Set to 0 for no timeout."
                                            },
                                            "windowExpression": {
                                                "type": "string",
                                                "description": "Expression that determines how pipeline data is grouped into windows for buffering."
                                            },
                                            "windowSize": {
                                                "type": "integer",
                                                "description": "Number of events to buffer before outputting as a batch."
                                            },
                                            "type": {
                                                "const": ".SizedBufferConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a buffer stage that accumulates events in a window, either by size or time, and outputs them as a batch. Use this stage to batch data before further processing or output.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "breakup": {
                                                "type": "boolean",
                                                "description": "If true, breaks up the results into individual events for downstream processing."
                                            },
                                            "query": {
                                                "$ref": "#/$defs/SmartQuery",
                                                "description": "SmartQuery definition specifying how to retrieve and transform data from multiple sources."
                                            },
                                            "type": {
                                                "const": ".SmartQueryConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a SmartQuery stage that retrieves, filters, and transforms data from multiple sources in a single operation. Use this stage to aggregate and process data efficiently.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "reference": {
                                                "type": "string",
                                                "description": "Reference to the sub-pipeline to execute. Specifies the name or address of the pipeline to run."
                                            },
                                            "type": {
                                                "const": ".SubPipelineConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a sub-pipeline stage that executes a referenced sub-pipeline as part of the main pipeline. Use this stage to modularize logic and reuse pipeline components.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "switchCases": {
                                                "description": "Defines the cases for branching logic. Each case specifies a condition and an output.",
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "description": {
                                                            "type": "string",
                                                            "description": "Optional description of the case for documentation or clarity."
                                                        },
                                                        "expression": {
                                                            "type": "string",
                                                            "description": "The expression to evaluate for this case. Determines if this case is selected."
                                                        },
                                                        "outputs": {
                                                            "description": "List of output labels to route to if this case matches.",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        }
                                                    },
                                                    "description": "Represents a case in a switch stage, including the expression to evaluate, the outputs to route to, and an optional description. Used for conditional branching in pipeline logic."
                                                }
                                            },
                                            "type": {
                                                "const": ".SwitchConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a switch stage that enables branching logic in the pipeline, allowing data to be routed to different outputs based on conditions. Use this stage for conditional data flows.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "windowExpression": {
                                                "type": "string",
                                                "description": "Expression that determines how pipeline data is grouped into windows for buffering."
                                            },
                                            "windowInterval": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Time interval for buffering events before outputting as a batch. Controls the window duration."
                                            },
                                            "type": {
                                                "const": ".TimedBufferConfig"
                                            }
                                        },
                                        "description": "The Timed Buffer stage accumulates events over a specified time interval and outputs them as a batch. Use this stage to batch data based on time windows for downstream processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string",
                                                "description": "Expression that determines whether the loop continues. The loop executes while this evaluates to true."
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "loopOutputs": {
                                                "description": "Specifies the outputs generated by each loop iteration. Used to route data from each cycle.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "loopValue": {
                                                "allOf": [
                                                    {
                                                        "type": "string",
                                                        "enum": [
                                                            "INCOMING",
                                                            "LAST_RETURN",
                                                            "ACCUMULATED"
                                                        ],
                                                        "description": "Specifies the value available in the loop and the value generated after loop completion."
                                                    },
                                                    {
                                                        "description": "Controls the value available in the loop and the value generated after loop completion."
                                                    }
                                                ]
                                            },
                                            "stageTimeout": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Maximum duration for the loop stage to execute before timing out. Prevents infinite or excessively long loops."
                                            },
                                            "type": {
                                                "const": ".WhileLoopConfig"
                                            }
                                        },
                                        "description": "The While Loop stage repeatedly executes its contained pipeline logic as long as the specified expression evaluates to true. Use this stage for conditional iterative processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "references": {
                                                "description": "List of references to write to. Each reference specifies a target for the write operation.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "writeReturn": {
                                                "$ref": "#/$defs/WriteReturn",
                                                "description": "Controls the write operation's return behavior, such as waiting for completion or ignoring the result."
                                            },
                                            "type": {
                                                "const": ".WriteConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a write stage that writes data to one or more specified references. Use this stage to output pipeline data to external systems, files, or tags.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "outgoingType": {
                                                "$ref": "#/$defs/OutgoingType",
                                                "description": "Specifies the output type for formatted data. Options include String or File, depending on how the data should be exported."
                                            },
                                            "type": {
                                                "const": ".XMLFormatConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for an XML format stage that serializes pipeline data into XML format. Use this stage to export, store, or transmit data as XML for integration with other systems.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "encoding": {
                                                "$ref": "#/$defs/FileEncodingType",
                                                "description": "Specifies the encoding used to decode incoming files. Supports automatic detection and explicit encoding selection."
                                            },
                                            "failureOutputs": {
                                                "description": "Names of the stages to use when a failure occurs in the stage.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "incomingType": {
                                                "$ref": "#/$defs/IncomingType",
                                                "description": "Specifies the type of incoming data to parse, such as String or File."
                                            },
                                            "type": {
                                                "const": ".XMLParserConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for an XML parser stage that parses incoming XML data into pipeline objects. Use this stage to ingest, validate, and transform XML payloads for downstream processing.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "comment": {
                                                "type": "string",
                                                "description": "Optional comment to include in the ZIP file."
                                            },
                                            "fileName": {
                                                "type": "string",
                                                "description": "Name of the ZIP file to create."
                                            },
                                            "level": {
                                                "type": "integer",
                                                "description": "Compression level for the ZIP file (0-9)."
                                            },
                                            "type": {
                                                "const": ".ZipConfig"
                                            }
                                        },
                                        "description": "Defines the configuration for a zip stage that compresses pipeline data into ZIP file format. Use this stage to package data for storage or transmission, specifying file name, comment, and compression level.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration object for the pipeline stage."
                                    }
                                ]
                            }
                        ]
                    },
                    "description": {
                        "type": "string"
                    },
                    "display": {
                        "$ref": "#/$defs/StageDisplay"
                    },
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "outputs": {
                        "description": "Names of output stages to route data to after this stage completes.",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "description": "Defines the input/output configuration for a pipeline stage, including the stage's configuration and output routing. Use this to specify how data flows between stages."
            }
        },
        "tags": {
            "description": "Tags for organizing and filtering configuration elements.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "trackActivity": {
            "type": "boolean",
            "description": "Flag indicating whether to track activity for this pipeline. If enabled, the system will log execution details for monitoring and debugging purposes."
        },
        "triggers": {
            "description": "List of trigger configurations for the pipeline. Triggers define external events or conditions that can initiate the execution of the pipeline, such as API calls or scheduled events.",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "config": {
                        "anyOf": [
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "interval": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Interval between trigger executions (e.g., every 5 seconds)."
                                            },
                                            "mode": {
                                                "allOf": [
                                                    {
                                                        "type": "string",
                                                        "enum": [
                                                            "interval",
                                                            "continuous"
                                                        ],
                                                        "description": "Mode for polled triggers. 'interval' mode triggers pipeline execution at fixed intervals, while 'continuous' mode triggers events after the previous execution completes."
                                                    },
                                                    {
                                                        "description": "Mode of the polled trigger, determining how it handles execution timing and potential overlaps."
                                                    }
                                                ]
                                            },
                                            "type": {
                                                "const": ".TriggerPolled"
                                            }
                                        },
                                        "description": "Configuration for a scheduled polled trigger. Triggers pipeline execution at regular intervals.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "flowEvaluation": {
                                                "type": "object",
                                                "properties": {
                                                    "delay": {
                                                        "$ref": "#/$defs/Interval"
                                                    },
                                                    "expression": {
                                                        "type": "string"
                                                    },
                                                    "interval": {
                                                        "$ref": "#/$defs/Interval"
                                                    },
                                                    "mode": {
                                                        "type": "string",
                                                        "enum": [
                                                            "Always",
                                                            "OnChange",
                                                            "OnTrue",
                                                            "WhileTrue"
                                                        ]
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "enum": [
                                                            "Polled",
                                                            "Exception"
                                                        ]
                                                    }
                                                },
                                                "description": "Strategy for evaluating flow conditions that trigger pipeline execution."
                                            },
                                            "inReferences": {
                                                "description": "List of input references that the trigger listens to.",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                }
                                            },
                                            "publishMode": {
                                                "type": "string",
                                                "enum": [
                                                    "All",
                                                    "OnlyChanges",
                                                    "OnlyChangesCompressed"
                                                ],
                                                "description": "Mode for publishing flow events"
                                            },
                                            "template": {
                                                "type": "object",
                                                "properties": {
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "params": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "properties": {
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "pattern": {
                                                                    "type": "string"
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "reference": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "enum": [
                                                            "Off",
                                                            "Dynamic",
                                                            "Static"
                                                        ]
                                                    }
                                                },
                                                "description": "Template settings for customizing trigger behavior."
                                            },
                                            "type": {
                                                "const": ".TriggerFlow"
                                            }
                                        },
                                        "description": "Configuration for a flow-based trigger. Triggers pipeline execution based on data flow or events.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "outputMode": {
                                                "type": "string",
                                                "enum": [
                                                    "ALL",
                                                    "COMPRESSED"
                                                ],
                                                "description": "Defines the output mode for a subscription trigger, determining whether all data or only changed data is included in the trigger output. Use ALL to include all data in the output, or CHANGED to include only data that has changed since the last trigger execution."
                                            },
                                            "reference": {
                                                "anyOf": [
                                                    {
                                                        "$ref": "#/$defs/EmptyReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/InstanceReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/PipelineReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/InputReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/ConditionReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/DynamicConditionReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/SystemReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/DictionaryReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/LegacyPipelineReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    },
                                                    {
                                                        "$ref": "#/$defs/UnresolvedReference",
                                                        "description": "Reference to the event that triggers pipeline execution."
                                                    }
                                                ]
                                            },
                                            "type": {
                                                "const": ".TriggerEvent"
                                            }
                                        },
                                        "description": "Configuration for an event-based trigger. Triggers pipeline execution when a specified event occurs.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "pollInterval": {
                                                "$ref": "#/$defs/Interval",
                                                "description": "Interval at which the namespace should be polled for changes. Only applicable if the underlying namespace does not support change notifications."
                                            },
                                            "query": {
                                                "$ref": "#/$defs/SmartQuery",
                                                "description": "Smart query to select the data in the namespace that should be monitored for changes. Only the 'from', 'where', and 'select.delim' clauses are respected."
                                            },
                                            "type": {
                                                "const": ".TriggerNamespace"
                                            }
                                        },
                                        "description": "Configuration for a namespace-based trigger. Subscribes to the namespace using path locator syntax and triggers pipeline execution when data changes occur in the namespace.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "logging": {
                                                "type": "string",
                                                "enum": [
                                                    "off",
                                                    "on"
                                                ],
                                                "description": "Controls logging for the cron trigger."
                                            },
                                            "schedule": {
                                                "type": "string",
                                                "description": "Cron schedule string that determines when the trigger fires."
                                            },
                                            "timezone": {
                                                "type": "string",
                                                "enum": [
                                                    "local",
                                                    "utc"
                                                ],
                                                "description": "Time zone for the cron schedule."
                                            },
                                            "type": {
                                                "const": ".TriggerCron"
                                            }
                                        },
                                        "description": "Configuration for a cron-based trigger. Triggers pipeline execution according to a cron schedule.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "parameters": {
                                                "$ref": "#/$defs/InlineParameters",
                                                "description": "Parameters that can be passed when invoking the pipeline internally. When left empty any value type can be passed in."
                                            },
                                            "type": {
                                                "const": ".TriggerCallable"
                                            }
                                        },
                                        "description": "Configuration for an externally callable trigger. Allows pipeline execution to be triggered by other pipelines.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "parameters": {
                                                "$ref": "#/$defs/InlineParameters",
                                                "description": "Parameters that can be passed when invoking the pipeline via API. When left empty any value type can be passed in."
                                            },
                                            "type": {
                                                "const": ".TriggerApi"
                                            }
                                        },
                                        "description": "Configuration for an API trigger. Allows pipeline execution to be triggered by API calls.",
                                        "required": [
                                            "type"
                                        ]
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Whether the trigger is enabled for pipeline execution."
                                            },
                                            "type": {
                                                "const": ".TriggerUnknown"
                                            }
                                        },
                                        "description": "Fallback configuration for unknown trigger types. Used when the trigger type is not recognized."
                                    },
                                    {
                                        "description": "Configuration for the pipeline trigger."
                                    }
                                ]
                            }
                        ]
                    },
                    "description": {
                        "type": "string"
                    },
                    "display": {
                        "$ref": "#/$defs/StageDisplay"
                    },
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    }
                },
                "description": "TriggerIOConfig defines the configuration for a pipeline trigger, including the trigger's settings and behavior."
            }
        }
    },
    "description": "Defines the configuration for a pipeline, including its stages, triggers, error handling, and activity tracking. Use this configuration to set up complex data workflows with conditional logic and external integrations."
}
