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 '