{
    "definitions": [
        {
            "name": "QueryRequest",
            "description": "Standard SOQL-compatible query request",
            "type": "struct",
            "fields": [
                {
                    "name": "objectApiName",
                    "type": "string",
                    "required": true,
                    "description": "The API name of the object to query"
                },
                {
                    "name": "filterExpr",
                    "type": "string",
                    "description": "Filter expression string (e.g. name = 'Acme')"
                },
                {
                    "name": "sortField",
                    "type": "string",
                    "description": "Field to sort by"
                },
                {
                    "name": "sortDirection",
                    "type": "string",
                    "description": "ASC or DESC"
                },
                {
                    "name": "limit",
                    "type": "integer",
                    "description": "Max records to return"
                },
                {
                    "name": "offset",
                    "type": "integer",
                    "description": "Offset for pagination"
                },
                {
                    "name": "scanAll",
                    "type": "boolean",
                    "description": "Include deleted records"
                },
                {
                    "name": "criteria",
                    "type": "array<QueryCriterion>",
                    "description": "Structured criteria items"
                },
                {
                    "name": "orderBy",
                    "type": "array<SortCriterion>",
                    "description": "Structured sorting items"
                },
                {
                    "name": "selectFields",
                    "type": "array<string>",
                    "required": true,
                    "description": "Specific fields to Select (REQUIRED - Salesforce SOQL requires explicit field list)"
                },
                {
                    "name": "groupBy",
                    "type": "string",
                    "description": "Group By clause"
                },
                {
                    "name": "having",
                    "type": "string",
                    "description": "Having clause"
                },
                {
                    "name": "subQueries",
                    "type": "array<SubQueryRequest>",
                    "description": "Child relationship subqueries parsed from SOQL"
                }
            ]
        },
        {
            "name": "SubQueryRequest",
            "description": "Child relationship subquery request",
            "type": "struct",
            "fields": [
                {
                    "name": "relationshipName",
                    "type": "string",
                    "required": true,
                    "description": "Child relationship API name"
                },
                {
                    "name": "selectFields",
                    "type": "array<string>",
                    "required": true,
                    "description": "Fields selected in the child subquery"
                },
                {
                    "name": "filterExpr",
                    "type": "string",
                    "description": "WHERE clause for the child subquery"
                },
                {
                    "name": "orderBy",
                    "type": "array<SortCriterion>",
                    "description": "ORDER BY clauses for the child subquery"
                },
                {
                    "name": "limit",
                    "type": "integer",
                    "description": "Maximum child rows to return"
                }
            ]
        },
        {
            "name": "QueryCriterion",
            "description": "Single filter condition",
            "type": "struct",
            "fields": [
                {
                    "name": "field",
                    "type": "string",
                    "required": true
                },
                {
                    "name": "op",
                    "type": "string",
                    "required": true,
                    "description": "Operator: eq, neq, gt, lt, etc."
                },
                {
                    "name": "val",
                    "type": "any",
                    "required": true
                }
            ]
        },
        {
            "name": "SortCriterion",
            "description": "Single sort condition",
            "type": "struct",
            "fields": [
                {
                    "name": "field",
                    "type": "string",
                    "required": true
                },
                {
                    "name": "direction",
                    "type": "string",
                    "required": true
                }
            ]
        },
        {
            "name": "SearchRequest",
            "description": "Global search request",
            "type": "struct",
            "fields": [
                {
                    "name": "term",
                    "type": "string",
                    "required": true
                }
            ]
        },
        {
            "name": "AnalyticsQuery",
            "description": "Aggregation query request",
            "type": "struct",
            "fields": [
                {
                    "name": "objectApiName",
                    "type": "string",
                    "required": true
                },
                {
                    "name": "operation",
                    "type": "string",
                    "required": true,
                    "description": "count, sum, avg, etc."
                },
                {
                    "name": "field",
                    "type": "string"
                },
                {
                    "name": "groupBy",
                    "type": "string"
                },
                {
                    "name": "filterExpr",
                    "type": "string"
                }
            ]
        }
    ]
}
