// Code generated by cmd/codegen. DO NOT EDIT.
// Source: api_contracts.json
// Generated at: 2026-01-01T00:00:00Z

package api

// QueryRequest
// Standard SOQL-compatible query request
type QueryRequest struct {
	ObjectAPIName string            `json:"objectApiName"`
	FilterExpr    string            `json:"filterExpr,omitempty"`
	SortField     string            `json:"sortField,omitempty"`
	SortDirection string            `json:"sortDirection,omitempty"`
	Limit         int               `json:"limit,omitempty"`
	Offset        int               `json:"offset,omitempty"`
	ScanAll       bool              `json:"scanAll,omitempty"`
	Criteria      []QueryCriterion  `json:"criteria,omitempty"`
	OrderBy       []SortCriterion   `json:"orderBy,omitempty"`
	SelectFields  []string          `json:"selectFields"`
	GroupBy       string            `json:"groupBy,omitempty"`
	Having        string            `json:"having,omitempty"`
	SubQueries    []SubQueryRequest `json:"subQueries,omitempty"`
}

// SubQueryRequest
// Child relationship subquery request
type SubQueryRequest struct {
	RelationshipName string          `json:"relationshipName"`
	SelectFields     []string        `json:"selectFields"`
	FilterExpr       string          `json:"filterExpr,omitempty"`
	OrderBy          []SortCriterion `json:"orderBy,omitempty"`
	Limit            int             `json:"limit,omitempty"`
}

// QueryCriterion
// Single filter condition
type QueryCriterion struct {
	Field string      `json:"field"`
	Op    string      `json:"op"`
	Val   interface{} `json:"val"`
}

// SortCriterion
// Single sort condition
type SortCriterion struct {
	Field     string `json:"field"`
	Direction string `json:"direction"`
}

// SearchRequest
// Global search request
type SearchRequest struct {
	Term string `json:"term"`
}

// AnalyticsQuery
// Aggregation query request
type AnalyticsQuery struct {
	ObjectAPIName string `json:"objectApiName"`
	Operation     string `json:"operation"`
	Field         string `json:"field,omitempty"`
	GroupBy       string `json:"groupBy,omitempty"`
	FilterExpr    string `json:"filterExpr,omitempty"`
}
