← Files Antom Reconciliation ExpertARCHIVED FILE

skills/antom-reconciliation-expert/scripts/core/dsl_schema.json

3.15 KB · Oct 4, 2026 · 12:32 UTC

↓ Download file

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Filter DSL Schema",
  "description": "JSON Schema definition for report data filtering DSL",
  "type": "object",
  "properties": {
    "WHERE": {
      "$ref": "#/definitions/condition"
    },
    "SELECT": {
      "type": "array",
      "items": {"type": "string"},
      "description": "List of column names to return, empty or unspecified returns all columns"
    },
    "GROUP_BY": {
      "type": "object",
      "properties": {
        "columns": {
          "type": "array",
          "items": {"type": "string"},
          "description": "Grouping column names"
        },
        "aggregations": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "column": {"type": "string", "description": "Column to aggregate"},
              "function": {"$ref": "#/definitions/agg_function"},
              "alias": {"type": "string", "description": "Alias for aggregation result"}
            },
            "required": ["column", "function"]
          }
        }
      },
      "required": ["columns", "aggregations"]
    },
    "ORDER_BY": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "column": {"type": "string"},
          "direction": {"enum": ["ASC", "DESC"], "default": "ASC"}
        },
        "required": ["column"]
      }
    },
    "LIMIT": {
      "type": "integer",
      "minimum": 1,
      "description": "Limit returned row count"
    }
  },
  "definitions": {
    "condition": {
      "oneOf": [
        {"$ref": "#/definitions/simple_condition"},
        {"$ref": "#/definitions/and_condition"},
        {"$ref": "#/definitions/or_condition"}
      ]
    },
    "simple_condition": {
      "type": "object",
      "properties": {
        "column": {"type": "string", "description": "Field name"},
        "op": {"$ref": "#/definitions/operator"},
        "value": {
          "oneOf": [
            {"type": "string"},
            {"type": "number"},
            {"type": "boolean"},
            {"type": "array"}
          ],
          "description": "Comparison value (array for IN operation)"
        }
      },
      "required": ["column", "op"],
      "additionalProperties": false
    },
    "and_condition": {
      "type": "object",
      "properties": {
        "AND": {
          "type": "array",
          "items": {"$ref": "#/definitions/condition"},
          "minItems": 2
        }
      },
      "required": ["AND"],
      "additionalProperties": false
    },
    "or_condition": {
      "type": "object",
      "properties": {
        "OR": {
          "type": "array",
          "items": {"$ref": "#/definitions/condition"},
          "minItems": 2
        }
      },
      "required": ["OR"],
      "additionalProperties": false
    },
    "operator": {
      "enum": [
        "=", "!=", ">", ">=", "<", "<=",
        "IN", "NOT IN",
        "LIKE",
        "IS NULL", "IS NOT NULL"
      ],
      "description": "Filter operator"
    },
    "agg_function": {
      "enum": ["SUM", "AVG", "COUNT", "MIN", "MAX", "FIRST", "LAST"],
      "description": "Aggregation function"
    }
  }
}

SHA-256: 4f82951d25f6e41bcaa13af0f59067a1268dd90e35b6ac1c1a4c116fb530ca4a