openapi: 3.0.0 info: title: Lightdash AiAgents Integrations 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: Integrations paths: /api/v1/slack/channels: get: operationId: getSlackChannels responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiSlackChannelsResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Get slack channels summary: Get Slack channels tags: - Integrations security: [] parameters: - in: query name: search required: false schema: type: string - in: query name: excludeArchived required: false schema: type: boolean - in: query name: excludeDms required: false schema: type: boolean - in: query name: excludeGroups required: false schema: type: boolean - in: query name: forceRefresh required: false schema: type: boolean - in: query name: includeChannelIds required: false schema: type: string /api/v1/slack/channels/{channelId}: get: operationId: getSlackChannelById responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiSlackChannelResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: 'Look up a single Slack channel by ID. Used for on-demand fetching when user pastes a channel ID not in the cache.' summary: Lookup channel tags: - Integrations security: [] parameters: - description: Slack channel ID (e.g., C01234567) in: path name: channelId required: true schema: type: string /api/v1/slack/custom-settings: put: operationId: UpdateCustomSettings responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiSlackCustomSettingsResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Update slack notification channel to send notifications to scheduled jobs fail summary: Update Slack custom settings tags: - Integrations security: [] parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SlackAppCustomSettings' /api/v1/slack/is-authenticated: get: operationId: IsSlackOpenIdLinked responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/ApiSuccessEmpty' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Check if the user has an OpenID identity for Slack summary: Check Slack OpenID link status tags: - Integrations security: [] parameters: [] /api/v1/slack: get: operationId: getSlackInstallation responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiSlackGetInstallationResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Get Slack installation details for the organization summary: Get Slack installation tags: - Integrations security: [] parameters: [] delete: operationId: deleteSlackInstall responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiSuccessEmpty' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Delete the Slack installation for the organization summary: Delete Slack installation tags: - Integrations security: [] parameters: [] /api/v1/slack/image/{nanoId}: get: operationId: getSlackImage responses: '200': description: Success content: application/json: schema: type: string format: byte default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Get a Slack image by nanoId summary: Get Slack image tags: - Integrations security: [] parameters: [] /api/v1/slack/preview/{id}: get: operationId: getSlackPreview responses: '302': description: Redirect default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: 'Get a Slack unfurl preview image via redirect to a fresh signed URL. Falls back to a placeholder image if the preview is not found.' summary: Get Slack preview tags: - Integrations security: [] parameters: - in: path name: id required: true schema: type: string /api/v1/slack/install: get: operationId: installSlack responses: '200': description: Success default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Start the Slack installation flow summary: Install Slack tags: - Integrations security: [] parameters: [] /api/v1/gdrive/get-access-token: get: operationId: getAccessToken responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiGdriveAccessTokenResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Get access token for google drive summary: Get Google Drive access token tags: - Integrations security: [] parameters: [] /api/v1/gdrive/upload-gsheet: post: operationId: uploadGsheet responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ApiJobScheduledResponse' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ApiErrorPayload' description: Upload results from query to Google Sheet summary: Upload to Google Sheet tags: - Integrations security: [] parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UploadMetricGsheet' components: schemas: 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 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 WindowFunctionType: enum: - row_number - percent_rank - cume_dist - rank - sum - avg - count - min - max type: string 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 ApiSuccess_SlackSettings-or-undefined_: properties: results: $ref: '#/components/schemas/SlackSettings' status: type: string enum: - ok nullable: false required: - status type: object CustomBinDimension: anyOf: - $ref: '#/components/schemas/FixedNumberBinDimension' - $ref: '#/components/schemas/FixedWidthBinDimension' - $ref: '#/components/schemas/CustomRangeBinDimension' - $ref: '#/components/schemas/CustomGroupBinDimension' 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 NumberSeparator: enum: - default - commaPeriod - spacePeriod - periodComma - noSeparatorPeriod - apostrophePeriod type: string 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.' FrameType: enum: - rows - range type: string 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 FiltersResponse: properties: tableCalculations: $ref: '#/components/schemas/FilterGroupResponse' metrics: $ref: '#/components/schemas/FilterGroupResponse' dimensions: $ref: '#/components/schemas/FilterGroupResponse' 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 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 UploadMetricGsheet: properties: pivotConfig: $ref: '#/components/schemas/PivotConfig' hiddenFields: items: type: string type: array customLabels: $ref: '#/components/schemas/CustomLabel' columnOrder: items: type: string type: array showTableNames: type: boolean metricQuery: $ref: '#/components/schemas/MetricQueryResponse' exploreId: type: string projectUuid: type: string required: - columnOrder - showTableNames - metricQuery - exploreId - projectUuid type: object FieldId: type: string GroupValueRule: properties: value: type: string matchType: $ref: '#/components/schemas/GroupValueMatchType' required: - value - matchType type: object CustomLabel: properties: {} additionalProperties: type: string type: object TableCalculationTemplateType.RANK_IN_COLUMN: enum: - rank_in_column type: string 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 TemplateTableCalculation: allOf: - $ref: '#/components/schemas/TableCalculationBase' - properties: template: $ref: '#/components/schemas/TableCalculationTemplate' description: Template-based calculation (alternative to sql) required: - template type: object ApiSlackCustomSettingsResponse: $ref: '#/components/schemas/ApiSuccessEmpty' 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.PERCENT_OF_COLUMN_TOTAL: enum: - percent_of_column_total type: string TableCalculationTemplateType.WINDOW_FUNCTION: enum: - window_function type: string ApiSuccess_SlackChannel-Array-or-undefined_: properties: results: items: $ref: '#/components/schemas/SlackChannel' type: array status: type: string enum: - ok nullable: false required: - status type: object BinType.FIXED_WIDTH: enum: - fixed_width type: string ApiSlackChannelsResponse: $ref: '#/components/schemas/ApiSuccess_SlackChannel-Array-or-undefined_' FormulaTableCalculation: allOf: - $ref: '#/components/schemas/TableCalculationBase' - properties: formula: type: string description: Spreadsheet-like formula compiled to SQL at query time required: - formula 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.' 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 ApiSuccessEmpty: properties: results: {} status: type: string enum: - ok nullable: false required: - status type: object TableCalculation: anyOf: - $ref: '#/components/schemas/SqlTableCalculation' - $ref: '#/components/schemas/TemplateTableCalculation' - $ref: '#/components/schemas/FormulaTableCalculation' 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 ApiSlackChannelResponse: $ref: '#/components/schemas/ApiSuccess_SlackChannel-or-null_' 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' SlackSettings: properties: unfurlsEnabled: type: boolean aiMultiAgentProjectUuids: items: type: string type: array nullable: true aiMultiAgentChannelId: type: string aiRequireOAuth: type: boolean hasRequiredScopes: type: boolean aiThreadAccessConsent: type: boolean slackChannelProjectMappings: items: $ref: '#/components/schemas/SlackChannelProjectMapping' type: array appProfilePhotoUrl: type: string notificationChannel: type: string scopes: items: type: string type: array token: type: string createdAt: type: string format: date-time appName: type: string slackTeamName: type: string organizationUuid: type: string required: - hasRequiredScopes - scopes - createdAt - slackTeamName - organizationUuid 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 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 ApiSuccess_SlackChannel-or-null_: properties: results: allOf: - $ref: '#/components/schemas/SlackChannel' nullable: true status: type: string enum: - ok nullable: false required: - results - status type: object ApiGdriveAccessTokenResponse: properties: results: type: string status: type: string enum: - ok nullable: false required: - results - status type: object 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 CustomDimensionType.BIN: enum: - bin type: string CustomFormatType: enum: - default - percent - currency - number - id - date - timestamp - bytes_si - bytes_iec - custom 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 SlackChannelProjectMapping: properties: availableTags: items: type: string type: array nullable: true slackChannelId: type: string projectUuid: type: string required: - availableTags - slackChannelId - projectUuid type: object ApiSlackGetInstallationResponse: $ref: '#/components/schemas/ApiSuccess_SlackSettings-or-undefined_' 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 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 PivotConfig: properties: hiddenDimensionFieldIds: items: type: string type: array description: 'Dimensions (row-index or pivot-column-header) hidden from the rendered pivot and from exports. The dimension still participates in the underlying query and can drive sort order; it just doesn''t render and is filtered out of CSV/XLSX. Mirrors `hiddenMetricFieldIds` for the dimension side.' rowTotals: type: boolean columnTotals: type: boolean visibleMetricFieldIds: items: type: string type: array hiddenMetricFieldIds: items: type: string type: array columnOrder: items: type: string type: array metricsAsRows: type: boolean pivotDimensions: items: type: string type: array required: - metricsAsRows - pivotDimensions type: object 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 GroupValueMatchType: enum: - exact - startsWith - endsWith - includes type: string 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 Compact: enum: - thousands - millions - billions - trillions - kilobytes - megabytes - gigabytes - terabytes - petabytes - kibibytes - mebibytes - gibibytes - tebibytes - pebibytes type: string BinType.FIXED_NUMBER: enum: - fixed_number 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 TableCalculationTemplateType.RUNNING_TOTAL: enum: - running_total type: string 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_OF_PREVIOUS_VALUE: enum: - percent_of_previous_value type: string CustomDimension: anyOf: - $ref: '#/components/schemas/CustomBinDimension' - $ref: '#/components/schemas/CustomSqlDimension' TableCalculationTemplateType.PERCENT_CHANGE_FROM_PREVIOUS: enum: - percent_change_from_previous 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 SlackAppCustomSettings: properties: unfurlsEnabled: type: boolean aiMultiAgentProjectUuids: items: type: string type: array nullable: true aiMultiAgentChannelId: type: string aiRequireOAuth: type: boolean aiThreadAccessConsent: type: boolean slackChannelProjectMappings: items: $ref: '#/components/schemas/SlackChannelProjectMapping' type: array appProfilePhotoUrl: type: string nullable: true notificationChannel: type: string nullable: true required: - appProfilePhotoUrl - notificationChannel type: object ApiJobScheduledResponse: properties: results: properties: jobId: type: string required: - jobId type: object status: type: string enum: - ok nullable: false required: - results - status type: object CustomDimensionType.SQL: enum: - sql type: string FrameBoundaryType: enum: - unbounded_preceding - preceding - current_row - following - unbounded_following type: string TableCalculationType: enum: - number - string - date - timestamp - boolean type: string Format: enum: - km - mi - usd - gbp - eur - jpy - dkk - id - percent type: string 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 BinType.CUSTOM_GROUP: enum: - custom_group type: string SlackChannel: properties: name: type: string id: type: string required: - name - id type: object securitySchemes: session_cookie: type: apiKey in: cookie name: connect.sid api_key: type: apiKey in: header name: Authorization description: Value should be 'ApiKey '