{
    "general": {
        "name": {
            "default": "Monster Configuration",
            "rules": {
                "type": "string",
                "description": "A human-readable name or label for this configuration."
            }
        },
        "id": {
            "default": null,
            "rules": {
                "type": "string",
                "nullable": true,
                "description": "A unique identifier for this configuration. If not provided, defaults to null."
            }
        },
        "unit": {
            "default": "unitless",
            "rules": {
                "type": "string",
                "description": "The unit for this configuration (e.g., 'meters', 'seconds', 'unitless')."
            }
        },
        "logging": {
            "logLevel": {
                "default": "info",
                "rules": {
                    "type": "enum",
                    "values": [
                        {
                            "value": "debug",
                            "description": "Log messages are printed for debugging purposes."
                        },
                        {
                            "value": "info",
                            "description": "Informational messages are printed."
                        },
                        {
                            "value": "warn",
                            "description": "Warning messages are printed."
                        },
                        {
                            "value": "error",
                            "description": "Error messages are printed."
                        }
                    ]
                }
            },
            "enabled": {
                "default": true,
                "rules": {
                    "type": "boolean",
                    "description": "Indicates whether logging is active. If true, log messages will be generated."
                }
            }
        }
    },
    "functionality": {
        "softwareType": {
            "default": "monster",
            "rules": {
                "type": "string",
                "description": "Specified software type for this configuration."
            }
        },
        "role": {
            "default": "samplingCabinet",
            "rules": {
                "type": "string",
                "description": "Indicates the role this configuration plays (e.g., sensor, controller, etc.)."
            }
        }
    },
    "asset": {
        "uuid": {
            "default": null,
            "rules": {
                "type": "string",
                "nullable": true,
                "description": "Asset tag number which is a universally unique identifier for this asset. May be null if not assigned."
            }
        },
        "geoLocation": {
            "default": {
                "x": 0,
                "y": 0,
                "z": 0
            },
            "rules": {
                "type": "object",
                "description": "An object representing the asset's physical coordinates or location.",
                "schema": {
                    "x": {
                        "default": 0,
                        "rules": {
                            "type": "number",
                            "description": "X coordinate of the asset's location."
                        }
                    },
                    "y": {
                        "default": 0,
                        "rules": {
                            "type": "number",
                            "description": "Y coordinate of the asset's location."
                        }
                    },
                    "z": {
                        "default": 0,
                        "rules": {
                            "type": "number",
                            "description": "Z coordinate of the asset's location."
                        }
                    }
                }
            }
        },
        "supplier": {
            "default": "Unknown",
            "rules": {
                "type": "string",
                "description": "The supplier or manufacturer of the asset."
            }
        },
        "type": {
            "default": "sensor",
            "rules": {
                "type": "enum",
                "values": [
                    {
                        "value": "sensor",
                        "description": "A device that detects or measures a physical property and responds to it (e.g. temperature sensor)."
                    }
                ]
            }
        },
        "subType": {
            "default": "pressure",
            "rules": {
                "type": "string",
                "description": "A more specific classification within 'type'. For example, 'pressure' for a pressure sensor."
            }
        },
        "model": {
            "default": "Unknown",
            "rules": {
                "type": "string",
                "description": "A user-defined or manufacturer-defined model identifier for the asset."
            }
        },
        "emptyWeightBucket": {
            "default": 3,
            "rules": {
                "type": "number",
                "description": "The weight of the empty bucket in kilograms."
            }
        }
    },
    "constraints": {
        "samplingtime": {
            "default": 0,
            "rules": {
                "type": "number",
                "description": "The time interval between sampling events (in seconds) if not using a flow meter."
            }
        },
        "samplingperiod": {
            "default": 24,
            "rules": {
                "type": "number",
                "description": "The fixed period in hours in which a composite sample is collected."
            }
        },
        "minVolume": {
            "default": 5,
            "rules": {
                "type": "number",
                "min": 5,
                "description": "The minimum volume in liters."
            }
        },
        "maxWeight": {
            "default": 23,
            "rules": {
                "type": "number",
                "max": 23,
                "description": "The maximum weight in kilograms."
            }
        },
        "subSampleVolume": {
            "default": 50,
            "rules": {
                "type": "number",
                "min": 50,
                "max": 50,
                "description": "The volume of each sub-sample in milliliters."
            }
        },
        "storageTemperature": {
            "default": {
                "min": 1,
                "max": 5
            },
            "rules": {
                "type": "object",
                "description": "Acceptable storage temperature range for samples in degrees Celsius.",
                "schema": {
                    "min": {
                        "default": 1,
                        "rules": {
                            "type": "number",
                            "min": 1,
                            "description": "Minimum acceptable storage temperature in degrees Celsius."
                        }
                    },
                    "max": {
                        "default": 5,
                        "rules": {
                            "type": "number",
                            "max": 5,
                            "description": "Maximum acceptable storage temperature in degrees Celsius."
                        }
                    }
                }
            }
        },
        "flowmeter": {
            "default": true,
            "rules": {
                "type": "boolean",
                "description": "Indicates whether a flow meter is used for proportional sampling."
            }
        },
        "closedSystem": {
            "default": false,
            "rules": {
                "type": "boolean",
                "description": "Indicates if the sampling system is closed (true) or open (false)."
            }
        },
        "intakeSpeed": {
            "default": 0.3,
            "rules": {
                "type": "number",
                "description": "Minimum intake speed in meters per second."
            }
        },
        "intakeDiameter": {
            "default": 12,
            "rules": {
                "type": "number",
                "description": "Minimum inner diameter of the intake tubing in millimeters."
            }
        }
    }
}
