// 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"`
}

// SearchResult
// Global search result item
type SearchResult struct {
	ObjectLabel string `json:"ObjectLabel,omitempty"`
	ObjectAPIName string `json:"ObjectApiName,omitempty"`
	Icon string `json:"Icon,omitempty"`
	Matches []map[string]interface{} `json:"Matches,omitempty"`
}

// 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"`
}

// UserDTO
// Public user profile data
type UserDTO struct {
	ID string `json:"Id"`
	Name string `json:"Name"`
	Email string `json:"Email"`
	ProfileID string `json:"ProfileId"`
	UserRoleID string `json:"UserRoleId,omitempty"`
}

// LoginRequest
// Login credentials
type LoginRequest struct {
	Email string `json:"Email"`
	Password string `json:"Password"`
}

// LoginResponse
// Authentication success payload
type LoginResponse struct {
	Success bool `json:"Success"`
	Token string `json:"Token"`
	User UserDTO `json:"User"`
	ExpiresAt string `json:"ExpiresAt"`
}

// PermissionSetDTO
// Effective user permissions
type PermissionSetDTO struct {
	ObjectPermissions interface{} `json:"ObjectPermissions"`
	FieldPermissions interface{} `json:"FieldPermissions"`
}

