openapi: 3.0.0
info:
title: Lightdash AiAgents Exploring API
version: 0.3156.1
description: 'Open API documentation for all public Lightdash API endpoints. # Authentication Before you get started, you might need to create a Personal Access Token to authenticate via the API. You can create a token by following this guide: https://docs.lightdash.com/references/personal_tokens
'
license:
name: MIT
contact:
name: Lightdash Support
email: support@lightdash.com
url: https://docs.lightdash.com/help-and-contact/contact/contact_info/
servers:
- url: /
tags:
- name: Exploring
paths:
/api/v1/projects/{projectUuid}/explores/{exploreId}/runUnderlyingDataQuery:
post:
operationId: postRunUnderlyingDataQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRunQueryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Deprecated — use the v2 Execute underlying data endpoint instead.
This endpoint was deprecated on 20 March 2025 and is past its sunset date (30 April 2025) — it may be removed at any time. Migrate to the v2 async query flow: Execute underlying data, then Get results.'
summary: Run underlying data query
tags:
- Exploring
deprecated: true
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: table name
in: path
name: exploreId
required: true
schema:
type: string
requestBody:
description: metricQuery for the chart to run
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MetricQueryRequest'
description: metricQuery for the chart to run
x-mint:
content: '
**This endpoint is deprecated and past its sunset date (30 April 2025) — it may be removed at any time.**
Migrate to the v2 async query flow: [Execute underlying data](https://docs.lightdash.com/api-reference/v2/execute-underlying-data) (`POST /api/v2/projects/{projectUuid}/query/underlying-data`) to start the query, then [Get results](https://docs.lightdash.com/api-reference/v2/get-results) to fetch rows. See also [Cancel query](https://docs.lightdash.com/api-reference/v2/cancel-query) and [Download results](https://docs.lightdash.com/api-reference/v2/download-results).
'
/api/v1/projects/{projectUuid}/explores/{exploreId}/runQuery:
post:
operationId: RunMetricQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRunQueryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Deprecated — use the v2 Execute metric query endpoint instead.
This endpoint was deprecated on 20 March 2025 and is past its sunset date (30 April 2025) — it may be removed at any time. Migrate to the v2 async query flow: Execute metric query, then Get results.'
summary: Run metric query
tags:
- Exploring
deprecated: true
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: table name
in: path
name: exploreId
required: true
schema:
type: string
requestBody:
description: metricQuery for the chart to run
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MetricQueryRequest'
description: metricQuery for the chart to run
x-mint:
content: '
**This endpoint is deprecated and past its sunset date (30 April 2025) — it may be removed at any time.**
Migrate to the v2 async query flow: [Execute metric query](https://docs.lightdash.com/api-reference/v2/execute-metric-query) (`POST /api/v2/projects/{projectUuid}/query/metric-query`) to start the query, then [Get results](https://docs.lightdash.com/api-reference/v2/get-results) to fetch rows. See also [Cancel query](https://docs.lightdash.com/api-reference/v2/cancel-query) and [Download results](https://docs.lightdash.com/api-reference/v2/download-results).
'
/api/v1/projects/{projectUuid}/sqlQuery:
post:
operationId: RunSqlQuery
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiSqlQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Deprecated — use the v2 Execute SQL query endpoint instead.
This endpoint was deprecated on 17 February 2025 and is past its sunset date (17 May 2025) — it may be removed at any time. Migrate to the v2 async query flow: Execute SQL query, then Get results.'
summary: Run SQL query
tags:
- Exploring
deprecated: true
security: []
parameters:
- description: The uuid of the project to run the query against
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: The query to run
required: true
content:
application/json:
schema:
properties:
sql:
type: string
required:
- sql
type: object
description: The query to run
x-mint:
content: '
**This endpoint is deprecated and past its sunset date (17 May 2025) — it may be removed at any time.**
Migrate to the v2 async query flow: [Execute SQL query](https://docs.lightdash.com/api-reference/v2/execute-sql-query) (`POST /api/v2/projects/{projectUuid}/query/sql`) to start the query, then [Get results](https://docs.lightdash.com/api-reference/v2/get-results) to fetch rows. See also [Cancel query](https://docs.lightdash.com/api-reference/v2/cancel-query) and [Download results](https://docs.lightdash.com/api-reference/v2/download-results).
'
components:
schemas:
DateZoom:
properties:
xAxisFieldId:
type: string
granularity:
anyOf:
- $ref: '#/components/schemas/DateGranularity'
- type: string
type: object
FieldUrl:
properties:
label:
type: string
url:
type: string
required:
- label
- url
type: object
DateGranularity:
enum:
- Second
- Minute
- Hour
- Day
- Week
- Month
- Quarter
- Year
type: string
Metric:
properties:
fieldType:
$ref: '#/components/schemas/FieldType.METRIC'
type:
$ref: '#/components/schemas/MetricType'
name:
type: string
label:
type: string
table:
type: string
tableLabel:
type: string
sql:
type: string
description:
type: string
source:
$ref: '#/components/schemas/Source'
hidden:
type: boolean
compact:
$ref: '#/components/schemas/CompactOrAlias'
round:
type: number
format: double
format:
anyOf:
- $ref: '#/components/schemas/Format'
- type: string
separator:
$ref: '#/components/schemas/NumberSeparator'
description: 'Number separator style for grouping/decimal characters. Composes with
`format` (including ECMA-376 expressions) and `formatOptions` — it only
controls the separator characters, not the format shape.'
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
urls:
items:
$ref: '#/components/schemas/FieldUrl'
type: array
index:
type: number
format: double
tags:
items:
type: string
type: array
parameterReferences:
items:
type: string
type: array
showUnderlyingValues:
items:
type: string
type: array
filters:
items:
$ref: '#/components/schemas/MetricFilterRule'
type: array
percentile:
type: number
format: double
distinctKeys:
items:
type: string
type: array
formatOptions:
$ref: '#/components/schemas/CustomFormat'
dimensionReference:
type: string
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
defaultTimeDimension:
$ref: '#/components/schemas/DefaultTimeDimension'
spotlight:
properties:
owner:
type: string
defaultFilter:
$ref: '#/components/schemas/MetricFilterRule'
defaultSegment:
type: string
segmentBy:
items:
type: string
type: array
filterBy:
items:
type: string
type: array
categories:
items:
type: string
type: array
visibility:
type: string
enum:
- show
- hide
required:
- visibility
type: object
drivers:
items:
type: string
type: array
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
richText:
type: string
required:
- fieldType
- type
- name
- label
- table
- tableLabel
- sql
- hidden
type: object
additionalProperties: true
PreAggregateMissReason.NO_PRE_AGGREGATES_DEFINED:
enum:
- no_pre_aggregates_defined
type: string
ApiRunQueryResponse:
properties:
results:
properties:
fields:
$ref: '#/components/schemas/Record_string.Item-or-AdditionalMetric_'
rows:
items:
$ref: '#/components/schemas/AnyType'
type: array
cacheMetadata:
$ref: '#/components/schemas/CacheMetadata'
metricQuery:
$ref: '#/components/schemas/MetricQueryResponse'
required:
- rows
- cacheMetadata
- metricQuery
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FieldType.METRIC:
enum:
- metric
type: string
ApiErrorPayload:
properties:
error:
properties:
data:
$ref: '#/components/schemas/AnyType'
description: Optional data containing details of the error
message:
type: string
description: A friendly message summarising the error
name:
type: string
description: Unique name for the type of error
statusCode:
type: number
format: integer
description: HTTP status code
required:
- name
- statusCode
type: object
status:
type: string
enum:
- error
nullable: false
required:
- error
- status
type: object
description: 'The Error object is returned from the api any time there is an error.
The message contains'
Pick_Metric.formatOptions_:
properties:
formatOptions:
$ref: '#/components/schemas/CustomFormat'
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Dimension.formatOptions_:
properties:
formatOptions:
$ref: '#/components/schemas/CustomFormat'
type: object
description: From T, pick a set of properties whose keys are in the union K
FixedWidthBinDimension:
properties:
id:
type: string
description: Unique identifier for the custom dimension
name:
type: string
description: Display name for the custom dimension
table:
type: string
description: Table this custom dimension belongs to
type:
$ref: '#/components/schemas/CustomDimensionType.BIN'
description: Type of custom dimension (bin or sql)
dimensionId:
$ref: '#/components/schemas/FieldId'
description: Field ID of the parent dimension to bin
binType:
$ref: '#/components/schemas/BinType.FIXED_WIDTH'
binWidth:
type: number
format: double
required:
- id
- name
- table
- type
- dimensionId
- binType
- binWidth
type: object
additionalProperties: true
PreAggregateMissReason.NON_ADDITIVE_METRIC:
enum:
- non_additive_metric
type: string
DimensionOverrides:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Pick_Dimension.formatOptions_'
type: object
BinType.FIXED_NUMBER:
enum:
- fixed_number
type: string
TableCalculationTemplateType.PERCENT_OF_PREVIOUS_VALUE:
enum:
- percent_of_previous_value
type: string
TableCalculationType:
enum:
- number
- string
- date
- timestamp
- boolean
type: string
CustomGroupBinDimension:
properties:
id:
type: string
description: Unique identifier for the custom dimension
name:
type: string
description: Display name for the custom dimension
table:
type: string
description: Table this custom dimension belongs to
type:
$ref: '#/components/schemas/CustomDimensionType.BIN'
description: Type of custom dimension (bin or sql)
dimensionId:
$ref: '#/components/schemas/FieldId'
description: Field ID of the parent dimension to bin
binType:
$ref: '#/components/schemas/BinType.CUSTOM_GROUP'
customGroups:
items:
$ref: '#/components/schemas/BinGroup'
type: array
required:
- id
- name
- table
- type
- dimensionId
- binType
- customGroups
type: object
additionalProperties: true
Record_string.unknown_:
properties: {}
additionalProperties: {}
type: object
description: Construct a type with a set of properties K of type T
PreAggregateMissReason.EXPLORE_RESOLUTION_ERROR:
enum:
- explore_resolution_error
type: string
FrameBoundaryType:
enum:
- unbounded_preceding
- preceding
- current_row
- following
- unbounded_following
type: string
FormulaTableCalculation:
allOf:
- $ref: '#/components/schemas/TableCalculationBase'
- properties:
formula:
type: string
description: Spreadsheet-like formula compiled to SQL at query time
required:
- formula
type: object
PreAggregateMissReason.METRIC_NOT_IN_PRE_AGGREGATE:
enum:
- metric_not_in_pre_aggregate
type: string
FrameType:
enum:
- rows
- range
type: string
FieldId:
type: string
CacheMetadata:
properties:
preAggregate:
properties:
reason:
$ref: '#/components/schemas/PreAggregateMatchMiss'
name:
type: string
hit:
type: boolean
required:
- hit
type: object
cacheHit:
type: boolean
cacheKey:
type: string
cacheExpiresAt:
type: string
format: date-time
cacheUpdatedTime:
type: string
format: date-time
required:
- cacheHit
type: object
DefaultTimeDimension:
properties:
interval:
$ref: '#/components/schemas/TimeFrames'
field:
type: string
required:
- interval
- field
type: object
BinRange:
properties:
to:
type: number
format: double
description: End value for this bin range (undefined for the last range)
from:
type: number
format: double
description: Start value for this bin range (undefined for the first range)
type: object
PreAggregateMissReason.GRANULARITY_TOO_FINE:
enum:
- granularity_too_fine
type: string
MetricOverrides:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Pick_Metric.formatOptions_'
type: object
Record_string.string-or-string-Array_:
properties: {}
additionalProperties:
anyOf:
- type: string
- items:
type: string
type: array
type: object
description: Construct a type with a set of properties K of type T
PreAggregateMissReason.USER_BYPASS:
enum:
- user_bypass
type: string
PreAggregateMatchMiss:
anyOf:
- properties:
reason:
$ref: '#/components/schemas/PreAggregateMissReason.NO_PRE_AGGREGATES_DEFINED'
required:
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.DIMENSION_NOT_IN_PRE_AGGREGATE'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.METRIC_NOT_IN_PRE_AGGREGATE'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.NON_ADDITIVE_METRIC'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.CUSTOM_SQL_METRIC'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.FILTER_DIMENSION_NOT_IN_PRE_AGGREGATE'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.PRE_AGGREGATE_FILTER_NOT_SATISFIED'
required:
- fieldId
- reason
type: object
- properties:
preAggregateTimeDimension:
type: string
preAggregateGranularity:
$ref: '#/components/schemas/TimeFrames'
queryGranularity:
$ref: '#/components/schemas/TimeFrames'
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.GRANULARITY_TOO_FINE'
required:
- preAggregateTimeDimension
- preAggregateGranularity
- queryGranularity
- fieldId
- reason
type: object
- properties:
reason:
$ref: '#/components/schemas/PreAggregateMissReason.CUSTOM_DIMENSION_PRESENT'
required:
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.CUSTOM_METRIC_PRESENT'
required:
- fieldId
- reason
type: object
- properties:
fieldId:
$ref: '#/components/schemas/FieldId'
reason:
$ref: '#/components/schemas/PreAggregateMissReason.TABLE_CALCULATION_PRESENT'
required:
- fieldId
- reason
type: object
- properties:
preAggregateName:
type: string
reason:
$ref: '#/components/schemas/PreAggregateMissReason.USER_BYPASS'
required:
- preAggregateName
- reason
type: object
- properties:
reason:
$ref: '#/components/schemas/PreAggregateMissReason.EXPLORE_RESOLUTION_ERROR'
required:
- reason
type: object
- properties:
reason:
$ref: '#/components/schemas/PreAggregateMissReason.NO_ACTIVE_MATERIALIZATION'
required:
- reason
type: object
CompactOrAlias:
anyOf:
- $ref: '#/components/schemas/Compact'
- type: string
enum:
- K
- thousand
- M
- million
- B
- billion
- T
- trillion
- KB
- kilobyte
- MB
- megabyte
- GB
- gigabyte
- TB
- terabyte
- PB
- petabyte
- KiB
- kibibyte
- MiB
- mebibyte
- GiB
- gibibyte
- TiB
- tebibyte
- PiB
- pebibyte
BinGroup:
properties:
values:
items:
$ref: '#/components/schemas/GroupValueRule'
type: array
description: Rules that match values into this group
name:
type: string
description: Display name for this group (e.g. "North America")
required:
- values
- name
type: object
Record_string._type-DimensionType__:
properties: {}
additionalProperties:
properties:
type:
$ref: '#/components/schemas/DimensionType'
required:
- type
type: object
type: object
description: Construct a type with a set of properties K of type T
AdditionalMetric:
properties:
label:
type: string
description: Display label for the metric
type:
$ref: '#/components/schemas/MetricType'
description: Aggregation type
description:
type: string
description: Description of what the metric measures
sql:
type: string
description: SQL expression (e.g., ${TABLE}.column_name)
hidden:
type: boolean
description: Whether the metric is hidden from users
round:
type: number
format: double
description: Number of decimal places
compact:
$ref: '#/components/schemas/CompactOrAlias'
description: Compact format for large numbers
format:
anyOf:
- $ref: '#/components/schemas/Format'
- type: string
description: Format string (legacy format specification)
separator:
$ref: '#/components/schemas/NumberSeparator'
description: Number separator style for grouping/decimal characters
table:
type: string
description: Table name the metric belongs to
name:
type: string
description: Internal name of the metric
index:
type: number
format: double
description: Display order index
filters:
items:
$ref: '#/components/schemas/MetricFilterRule'
type: array
description: Filters to apply to this metric
baseDimensionName:
type: string
description: Name of the base dimension/column this metric aggregates
uuid:
type: string
nullable: true
description: Unique identifier for the metric
percentile:
type: number
format: double
description: Percentile value for percentile metrics
distinctKeys:
items:
type: string
type: array
formatOptions:
$ref: '#/components/schemas/CustomFormat'
description: Formatting configuration
generationType:
type: string
enum:
- periodOverPeriod
nullable: false
description: 'Optional marker for metrics generated by the system.
Currently used for Period-over-Period (PoP) previous-period metrics.'
baseMetricId:
$ref: '#/components/schemas/FieldId'
description: For PoP-generated metrics, the base metric id that this metric is derived from.
timeDimensionId:
$ref: '#/components/schemas/FieldId'
description: For PoP-generated metrics, the time dimension id used for the comparison.
granularity:
$ref: '#/components/schemas/TimeFrames'
description: For PoP-generated metrics, the granularity used for the comparison.
periodOffset:
type: number
format: double
description: For PoP-generated metrics, the number of periods to offset by (>= 1).
required:
- type
- sql
- table
- name
type: object
additionalProperties: true
Source:
properties:
content:
type: string
highlight:
properties:
end:
$ref: '#/components/schemas/SourcePosition'
start:
$ref: '#/components/schemas/SourcePosition'
required:
- end
- start
type: object
range:
properties:
end:
$ref: '#/components/schemas/SourcePosition'
start:
$ref: '#/components/schemas/SourcePosition'
required:
- end
- start
type: object
path:
type: string
required:
- content
- range
- path
type: object
FrameBoundary:
properties:
offset:
type: number
format: double
description: Offset for PRECEDING/FOLLOWING
type:
$ref: '#/components/schemas/FrameBoundaryType'
description: Boundary type
required:
- type
type: object
DimensionType:
enum:
- string
- number
- timestamp
- date
- boolean
type: string
TableCalculationTemplateType.PERCENT_CHANGE_FROM_PREVIOUS:
enum:
- percent_change_from_previous
type: string
SortField:
properties:
pivotValues:
items:
$ref: '#/components/schemas/PivotSortAnchor'
type: array
description: Pins the row-sort anchor to a specific pivot column. Ignored for non-pivoted results.
nullsFirst:
type: boolean
description: Sort null values first
descending:
type: boolean
description: Sort in descending order
fieldId:
type: string
description: Field ID to sort by
required:
- descending
- fieldId
type: object
MetricType:
enum:
- percentile
- average
- count
- count_distinct
- sum
- sum_distinct
- average_distinct
- min
- max
- percent_of_previous
- percent_of_total
- running_total
- number
- median
- string
- date
- timestamp
- boolean
type: string
NumberSeparator:
enum:
- default
- commaPeriod
- spacePeriod
- periodComma
- noSeparatorPeriod
- apostrophePeriod
type: string
CustomBinDimension:
anyOf:
- $ref: '#/components/schemas/FixedNumberBinDimension'
- $ref: '#/components/schemas/FixedWidthBinDimension'
- $ref: '#/components/schemas/CustomRangeBinDimension'
- $ref: '#/components/schemas/CustomGroupBinDimension'
FiltersResponse:
properties:
tableCalculations:
$ref: '#/components/schemas/FilterGroupResponse'
metrics:
$ref: '#/components/schemas/FilterGroupResponse'
dimensions:
$ref: '#/components/schemas/FilterGroupResponse'
type: object
ApiSqlQueryResults:
properties:
rows:
items:
$ref: '#/components/schemas/Record_string.unknown_'
type: array
fields:
$ref: '#/components/schemas/Record_string._type-DimensionType__'
required:
- rows
- fields
type: object
FilterGroupResponse:
anyOf:
- properties:
or:
items:
$ref: '#/components/schemas/AnyType'
type: array
id:
type: string
required:
- or
- id
type: object
- properties:
and:
items:
$ref: '#/components/schemas/AnyType'
type: array
id:
type: string
required:
- and
- id
type: object
GroupValueRule:
properties:
value:
type: string
matchType:
$ref: '#/components/schemas/GroupValueMatchType'
required:
- value
- matchType
type: object
FrameClause:
properties:
end:
$ref: '#/components/schemas/FrameBoundary'
description: End boundary of the frame
start:
$ref: '#/components/schemas/FrameBoundary'
description: Start boundary of the frame
frameType:
$ref: '#/components/schemas/FrameType'
description: Type of frame (ROWS or RANGE)
required:
- end
- frameType
type: object
Pick_CompiledDimension.label-or-name-or-table_:
properties:
name:
type: string
label:
type: string
table:
type: string
required:
- name
- label
- table
type: object
description: From T, pick a set of properties whose keys are in the union K
TableCalculationTemplateType.WINDOW_FUNCTION:
enum:
- window_function
type: string
MetricQueryRequest:
properties:
dimensionOverrides:
$ref: '#/components/schemas/DimensionOverrides'
metricOverrides:
$ref: '#/components/schemas/MetricOverrides'
pivotDimensions:
items:
$ref: '#/components/schemas/FieldId'
type: array
timezone:
type: string
metadata:
properties:
hasADateDimension:
$ref: '#/components/schemas/Pick_CompiledDimension.label-or-name-or-table_'
required:
- hasADateDimension
type: object
dateZoom:
$ref: '#/components/schemas/DateZoom'
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
csvLimit:
type: number
format: double
additionalMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
tableCalculations:
items:
$ref: '#/components/schemas/TableCalculation'
type: array
limit:
type: number
format: double
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
filters:
properties:
tableCalculations:
$ref: '#/components/schemas/AnyType'
metrics:
$ref: '#/components/schemas/AnyType'
dimensions:
$ref: '#/components/schemas/AnyType'
type: object
metrics:
items:
$ref: '#/components/schemas/FieldId'
type: array
dimensions:
items:
$ref: '#/components/schemas/FieldId'
type: array
exploreName:
type: string
required:
- tableCalculations
- limit
- sorts
- filters
- metrics
- dimensions
- exploreName
type: object
AnyType:
description: 'This AnyType is an alias for any
The goal is to make it easier to identify any type in the codebase
without having to eslint-disable all the time
These are only used on legacy `any` types, don''t use it for new types.
This is added on a separate file to avoid circular dependencies.'
TableCalculation:
anyOf:
- $ref: '#/components/schemas/SqlTableCalculation'
- $ref: '#/components/schemas/TemplateTableCalculation'
- $ref: '#/components/schemas/FormulaTableCalculation'
FieldType:
enum:
- metric
- dimension
type: string
TimeFrames:
enum:
- RAW
- YEAR
- QUARTER
- MONTH
- WEEK
- DAY
- HOUR
- MINUTE
- SECOND
- MILLISECOND
- DAY_OF_WEEK_INDEX
- DAY_OF_MONTH_NUM
- DAY_OF_YEAR_NUM
- WEEK_NUM
- MONTH_NUM
- QUARTER_NUM
- YEAR_NUM
- DAY_OF_WEEK_NAME
- MONTH_NAME
- QUARTER_NAME
- HOUR_OF_DAY_NUM
- MINUTE_OF_HOUR_NUM
type: string
PreAggregateMissReason.PRE_AGGREGATE_FILTER_NOT_SATISFIED:
enum:
- pre_aggregate_filter_not_satisfied
type: string
PreAggregateMissReason.NO_ACTIVE_MATERIALIZATION:
enum:
- no_active_materialization
type: string
SqlTableCalculation:
allOf:
- $ref: '#/components/schemas/TableCalculationBase'
- properties:
sql:
type: string
description: SQL expression for the calculation (can reference fields with ${table.field})
required:
- sql
type: object
PreAggregateMissReason.CUSTOM_DIMENSION_PRESENT:
enum:
- custom_dimension_present
type: string
Field:
properties:
fieldType:
$ref: '#/components/schemas/FieldType'
type:
type: string
name:
type: string
label:
type: string
table:
type: string
tableLabel:
type: string
sql:
type: string
description:
type: string
source:
$ref: '#/components/schemas/Source'
hidden:
type: boolean
compact:
$ref: '#/components/schemas/CompactOrAlias'
round:
type: number
format: double
format:
anyOf:
- $ref: '#/components/schemas/Format'
- type: string
separator:
$ref: '#/components/schemas/NumberSeparator'
description: 'Number separator style for grouping/decimal characters. Composes with
`format` (including ECMA-376 expressions) and `formatOptions` — it only
controls the separator characters, not the format shape.'
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
urls:
items:
$ref: '#/components/schemas/FieldUrl'
type: array
index:
type: number
format: double
tags:
items:
type: string
type: array
parameterReferences:
items:
type: string
type: array
required:
- fieldType
- type
- name
- label
- table
- tableLabel
- sql
- hidden
type: object
additionalProperties: true
PreAggregateMissReason.DIMENSION_NOT_IN_PRE_AGGREGATE:
enum:
- dimension_not_in_pre_aggregate
type: string
PreAggregateMissReason.CUSTOM_SQL_METRIC:
enum:
- custom_sql_metric
type: string
FixedNumberBinDimension:
properties:
id:
type: string
description: Unique identifier for the custom dimension
name:
type: string
description: Display name for the custom dimension
table:
type: string
description: Table this custom dimension belongs to
type:
$ref: '#/components/schemas/CustomDimensionType.BIN'
description: Type of custom dimension (bin or sql)
dimensionId:
$ref: '#/components/schemas/FieldId'
description: Field ID of the parent dimension to bin
binType:
$ref: '#/components/schemas/BinType.FIXED_NUMBER'
binNumber:
type: number
format: double
required:
- id
- name
- table
- type
- dimensionId
- binType
- binNumber
type: object
additionalProperties: true
BinType.CUSTOM_RANGE:
enum:
- custom_range
type: string
GroupValueMatchType:
enum:
- exact
- startsWith
- endsWith
- includes
type: string
Compact:
enum:
- thousands
- millions
- billions
- trillions
- kilobytes
- megabytes
- gigabytes
- terabytes
- petabytes
- kibibytes
- mebibytes
- gibibytes
- tebibytes
- pebibytes
type: string
TableCalculationTemplateType.RUNNING_TOTAL:
enum:
- running_total
type: string
BinType.CUSTOM_GROUP:
enum:
- custom_group
type: string
CustomFormat:
properties:
type:
$ref: '#/components/schemas/CustomFormatType'
description: Format type
round:
type: number
format: double
description: Number of decimal places
separator:
$ref: '#/components/schemas/NumberSeparator'
description: Number separator style
currency:
type: string
description: Currency code (e.g., USD, GBP, EUR)
compact:
$ref: '#/components/schemas/CompactOrAlias'
description: Compact format for large numbers (K, M, B, T) or byte units
prefix:
type: string
description: Prefix to prepend to formatted values
suffix:
type: string
description: Suffix to append to formatted values
timeInterval:
$ref: '#/components/schemas/TimeFrames'
description: Time interval for date formatting
custom:
type: string
description: Custom format string
required:
- type
type: object
additionalProperties: true
WindowFunctionType:
enum:
- row_number
- percent_rank
- cume_dist
- rank
- sum
- avg
- count
- min
- max
type: string
CustomRangeBinDimension:
properties:
id:
type: string
description: Unique identifier for the custom dimension
name:
type: string
description: Display name for the custom dimension
table:
type: string
description: Table this custom dimension belongs to
type:
$ref: '#/components/schemas/CustomDimensionType.BIN'
description: Type of custom dimension (bin or sql)
dimensionId:
$ref: '#/components/schemas/FieldId'
description: Field ID of the parent dimension to bin
binType:
$ref: '#/components/schemas/BinType.CUSTOM_RANGE'
customRange:
items:
$ref: '#/components/schemas/BinRange'
type: array
required:
- id
- name
- table
- type
- dimensionId
- binType
- customRange
type: object
additionalProperties: true
PivotSortAnchor:
properties:
value:
anyOf:
- type: string
- type: number
format: double
- type: boolean
nullable: true
reference:
type: string
required:
- value
- reference
type: object
description: 'Coordinates of a single pivot column, used to anchor a row sort to that
specific column when results are pivoted.'
TableCalculationBase:
properties:
type:
$ref: '#/components/schemas/TableCalculationType'
description: Data type of the calculation result
format:
$ref: '#/components/schemas/CustomFormat'
description: Formatting options for the calculation
displayName:
type: string
description: Display name shown in the UI
name:
type: string
description: Internal name of the table calculation
index:
type: number
format: double
description: Display order index
required:
- displayName
- name
type: object
TableCalculationTemplate:
anyOf:
- properties:
partitionBy:
items:
type: string
type: array
orderBy:
items:
properties:
order:
type: string
enum:
- asc
- desc
- null
nullable: true
fieldId:
type: string
required:
- order
- fieldId
type: object
type: array
description: Fields to order by for window functions
fieldId:
type: string
description: Field ID to apply the template to
type:
$ref: '#/components/schemas/TableCalculationTemplateType.PERCENT_CHANGE_FROM_PREVIOUS'
description: Type of template calculation
required:
- orderBy
- fieldId
- type
type: object
- properties:
partitionBy:
items:
type: string
type: array
orderBy:
items:
properties:
order:
type: string
enum:
- asc
- desc
- null
nullable: true
fieldId:
type: string
required:
- order
- fieldId
type: object
type: array
description: Fields to order by for window functions
fieldId:
type: string
description: Field ID to apply the template to
type:
$ref: '#/components/schemas/TableCalculationTemplateType.PERCENT_OF_PREVIOUS_VALUE'
description: Type of template calculation
required:
- orderBy
- fieldId
- type
type: object
- properties:
partitionBy:
items:
type: string
type: array
description: Fields to partition by
fieldId:
type: string
description: Field ID to apply the template to
type:
$ref: '#/components/schemas/TableCalculationTemplateType.PERCENT_OF_COLUMN_TOTAL'
description: Type of template calculation
required:
- fieldId
- type
type: object
- properties:
fieldId:
type: string
description: Field ID to apply the template to
type:
$ref: '#/components/schemas/TableCalculationTemplateType.RANK_IN_COLUMN'
description: Type of template calculation
required:
- fieldId
- type
type: object
- properties:
fieldId:
type: string
description: Field ID to apply the template to
type:
$ref: '#/components/schemas/TableCalculationTemplateType.RUNNING_TOTAL'
description: Type of template calculation
required:
- fieldId
- type
type: object
- properties:
frame:
$ref: '#/components/schemas/FrameClause'
description: Frame clause for window functions
partitionBy:
items:
type: string
type: array
description: Fields to partition by for window functions
orderBy:
items:
properties:
order:
type: string
enum:
- asc
- desc
- null
nullable: true
fieldId:
type: string
required:
- order
- fieldId
type: object
type: array
description: Fields to order by for window functions
fieldId:
type: string
nullable: true
description: Field ID to apply the template to
windowFunction:
$ref: '#/components/schemas/WindowFunctionType'
description: Window function type
type:
$ref: '#/components/schemas/TableCalculationTemplateType.WINDOW_FUNCTION'
description: Type of template calculation
required:
- partitionBy
- orderBy
- fieldId
- windowFunction
- type
type: object
TableCalculationTemplateType.RANK_IN_COLUMN:
enum:
- rank_in_column
type: string
TemplateTableCalculation:
allOf:
- $ref: '#/components/schemas/TableCalculationBase'
- properties:
template:
$ref: '#/components/schemas/TableCalculationTemplate'
description: Template-based calculation (alternative to sql)
required:
- template
type: object
TableCalculationTemplateType.PERCENT_OF_COLUMN_TOTAL:
enum:
- percent_of_column_total
type: string
BinType.FIXED_WIDTH:
enum:
- fixed_width
type: string
PreAggregateMissReason.CUSTOM_METRIC_PRESENT:
enum:
- custom_metric_present
type: string
SourcePosition:
properties:
character:
type: number
format: double
line:
type: number
format: double
required:
- character
- line
type: object
FilterOperator:
enum:
- isNull
- notNull
- equals
- notEquals
- startsWith
- endsWith
- include
- doesNotInclude
- lessThan
- lessThanOrEqual
- greaterThan
- greaterThanOrEqual
- inThePast
- notInThePast
- inTheNext
- inTheCurrent
- notInTheCurrent
- inBetween
- notInBetween
- inPeriodToDate
type: string
PreAggregateMissReason.FILTER_DIMENSION_NOT_IN_PRE_AGGREGATE:
enum:
- filter_dimension_not_in_pre_aggregate
type: string
CustomDimensionType.BIN:
enum:
- bin
type: string
CustomFormatType:
enum:
- default
- percent
- currency
- number
- id
- date
- timestamp
- bytes_si
- bytes_iec
- custom
type: string
Record_string.Item-or-AdditionalMetric_:
properties: {}
additionalProperties:
anyOf:
- $ref: '#/components/schemas/Field'
- $ref: '#/components/schemas/Metric'
- $ref: '#/components/schemas/TableCalculation'
- $ref: '#/components/schemas/AdditionalMetric'
- $ref: '#/components/schemas/CustomDimension'
type: object
description: Construct a type with a set of properties K of type T
MetricQueryResponse:
properties:
metadata:
properties:
hasADateDimension:
$ref: '#/components/schemas/Pick_CompiledDimension.label-or-name-or-table_'
required:
- hasADateDimension
type: object
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
additionalMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
tableCalculations:
items:
$ref: '#/components/schemas/TableCalculation'
type: array
limit:
type: number
format: double
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
filters:
$ref: '#/components/schemas/FiltersResponse'
metrics:
items:
$ref: '#/components/schemas/FieldId'
type: array
dimensions:
items:
$ref: '#/components/schemas/FieldId'
type: array
exploreName:
type: string
required:
- tableCalculations
- limit
- sorts
- filters
- metrics
- dimensions
- exploreName
type: object
PreAggregateMissReason.TABLE_CALCULATION_PRESENT:
enum:
- table_calculation_present
type: string
CustomSqlDimension:
properties:
id:
type: string
description: Unique identifier for the custom dimension
name:
type: string
description: Display name for the custom dimension
table:
type: string
description: Table this custom dimension belongs to
type:
$ref: '#/components/schemas/CustomDimensionType.SQL'
description: Type of custom dimension (bin or sql)
sql:
type: string
description: SQL expression for the custom dimension
dimensionType:
$ref: '#/components/schemas/DimensionType'
description: Data type of the dimension result
required:
- id
- name
- table
- type
- sql
- dimensionType
type: object
additionalProperties: true
Format:
enum:
- km
- mi
- usd
- gbp
- eur
- jpy
- dkk
- id
- percent
type: string
CustomDimension:
anyOf:
- $ref: '#/components/schemas/CustomBinDimension'
- $ref: '#/components/schemas/CustomSqlDimension'
MetricFilterRule:
description: Filter rule for metrics, targeting fields by reference
properties:
values:
items:
$ref: '#/components/schemas/AnyType'
type: array
description: Values to filter by
operator:
$ref: '#/components/schemas/FilterOperator'
description: Filter operator
id:
type: string
description: Unique identifier for the filter
target:
properties:
fieldRef:
type: string
description: Field reference to filter on (e.g., 'table_name.field_name')
required:
- fieldRef
type: object
description: Target field for the filter
settings:
$ref: '#/components/schemas/AnyType'
description: Additional settings for date/time filters
disabled:
type: boolean
description: Whether this filter is disabled
required:
type: boolean
description: Whether this filter is required
caseSensitive:
type: boolean
description: 'Overrides the field/explore case-sensitivity for this rule only.
Used by internal features like autocomplete search that must always
match case-insensitively regardless of the field''s configured setting.'
required:
- operator
- id
- target
type: object
additionalProperties: true
CustomDimensionType.SQL:
enum:
- sql
type: string
securitySchemes:
session_cookie:
type: apiKey
in: cookie
name: connect.sid
api_key:
type: apiKey
in: header
name: Authorization
description: Value should be 'ApiKey '