Package-level declarations

Types

Link copied to clipboard
data class AggregationLimitsDescriptor(val maxGroups: Int, val maxMetrics: Int, val maxElements: Int, val maxLimit: Int, val maxExpressionDepth: Int, val maxExpressionNodes: Int)
Link copied to clipboard
data class AnalysisDescriptor(val metrics: List<String>, val approximate: List<String>, val expressions: Boolean, val having: HavingDescriptor, val sort: AnalysisSortDescriptor, val dense: Boolean, val dateUnits: List<AggregationDateUnit>, val dateParts: List<AggregationDatePart>, val dateDiffUnits: List<DateDiffUnit>, val firstLastOrderBy: String? = null)
Link copied to clipboard
data class AnalysisSortDescriptor(val groups: Boolean, val metrics: Boolean)
Link copied to clipboard
data class ConstraintDescriptor(val type: String, val appended: String? = null, val fields: List<String>? = null)

A combination rule that per-field listings cannot express.

Link copied to clipboard
data class DynamicFieldDescriptor(val pattern: String, val types: Set<QueryValueType>, val kind: QueryValueKind, val filter: FieldFilterDescriptor, val excludedKeys: List<String>?)
Link copied to clipboard
data class ElementDescriptor(val path: String, val filter: Boolean, val aggregate: Boolean, val search: SearchDescriptor? = null)

An element (a nested array) that ELEMENT_MATCH can scope; search is full-text search on its fields, null when storage can search none of them.

Link copied to clipboard
data class EnumValueDescriptor(val value: JsonNode, val description: String? = null)
Link copied to clipboard
data class FieldAggregateDescriptor(val groups: List<String>, val missingKey: Boolean, val functions: List<String>, val distinctCount: Boolean, val percentile: Boolean, val any: Boolean, val firstLast: Boolean, val expressionInput: Boolean, val inMetricFilter: Boolean)
Link copied to clipboard
data class FieldDescriptor(val path: String, val role: String?, val types: Set<QueryValueType>, val kind: QueryValueKind, val nullable: Boolean, val semantic: QuerySemanticType?, val enum: List<EnumValueDescriptor>?, val description: String?, val sensitivity: SensitivityDescriptor?, val project: Boolean, val filter: FieldFilterDescriptor, val sort: FieldSortDescriptor, val aggregate: FieldAggregateDescriptor?, val scope: String?, val deprecated: QueryDeprecation? = null, val aliases: List<String> = emptyList())
Link copied to clipboard
data class FieldFilterDescriptor(val operators: List<FilterOperator>)
Link copied to clipboard
data class FieldSortDescriptor(val paged: Boolean, val cursor: Boolean)
Link copied to clipboard
data class HavingDescriptor(val metrics: List<String>)
Link copied to clipboard
data class LimitsDescriptor(val maxListSize: Int?, val defaultListSize: Int?, val maxPageSize: Int?, val maxPageWindow: Long?, val maxFilterNodes: Int?, val maxFilterValues: Int?, val maxSortFields: Int, val aggregation: AggregationLimitsDescriptor)

Effective limits of this entry: protocol limits and the entry's budget, whichever is smaller; null is unlimited.

Link copied to clipboard
Link copied to clipboard
data class QueryModelDescriptor(val model: QueryModel, val version: String, val timeZone: String, val record: RecordDescriptor, val limits: LimitsDescriptor, val analysis: AnalysisDescriptor, val fields: List<FieldDescriptor>, val elements: List<ElementDescriptor>, val dynamic: List<DynamicFieldDescriptor>, val constraints: List<ConstraintDescriptor>, val variants: VariantsDescriptor? = null)

How a query model can be queried on one entry: the answer GET …/schema gives to agents and the view engine.

Link copied to clipboard
data class RecordDescriptor(val identity: String, val paging: List<PagingMode>, val defaultScope: DeletionState?, val rootOperators: List<FilterOperator>, val search: SearchDescriptor?)
Link copied to clipboard
data class SearchDescriptor(val modes: List<SearchMode>, val fields: List<String>)

Full-text search in one scope. For the record, modes are those of a model-wide SEARCH (without fields) and fields the record-level fields a SEARCH may name. For an element, SEARCH goes inside an ELEMENT_MATCH on it and must name fields: fields are its searchable fields, by full logical path (written relative to the element in the query), and modes those every listed field accepts.

Link copied to clipboard
data class SensitivityDescriptor(val level: SensitivityLevel, val comparable: Boolean)

A sensitive field's protection: its level and whether filters and paged sorts may still compare its raw value. comparable is false for SensitivityLevel.CONFIDENTIAL, and for SensitivityLevel.DISPLAY when the server turned comparison off.

Link copied to clipboard
data class VariantDescriptor(val value: String, val fields: List<FieldDescriptor>, val description: String? = null)

One variant: its discriminator value and the fields it has, by paths relative to the element.

Link copied to clipboard
data class VariantsDescriptor(val element: String, val discriminator: String, val values: List<VariantDescriptor>)

An element of every record whose fields differ by variant: an EventStream record's body holds events whose payload fields depend on bodyType. A condition on one variant's field must be written inside an ELEMENT_MATCH on element together with the discriminator, so both apply to the same element.