openapi: 3.0.0
components:
examples: {}
headers: {}
parameters: {}
requestBodies: {}
responses: {}
schemas:
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.'
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'
ApiSuccessEmpty:
properties:
results: {}
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
ServiceAccountScope:
enum:
- scim:manage
- org:admin
- org:edit
- org:read
- system:member
- system:admin
- system:developer
- system:editor
- system:interactive_viewer
- system:viewer
type: string
ServiceAccount:
properties:
roleUuid:
type: string
nullable: true
userUuid:
type: string
scopes:
items:
$ref: '#/components/schemas/ServiceAccountScope'
type: array
rotatedAt:
type: string
format: date-time
nullable: true
lastUsedAt:
type: string
format: date-time
nullable: true
description:
type: string
expiresAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
organizationUuid:
type: string
createdBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
createdByUserUuid:
type: string
nullable: true
uuid:
type: string
required:
- roleUuid
- userUuid
- scopes
- rotatedAt
- lastUsedAt
- description
- expiresAt
- createdAt
- organizationUuid
- createdBy
- createdByUserUuid
- uuid
type: object
ServiceAccountWithProjectAccessCount:
allOf:
- $ref: '#/components/schemas/ServiceAccount'
- properties:
projectAccessCount:
type: number
format: double
required:
- projectAccessCount
type: object
description: 'SA + the count of `project_memberships` rows keyed on its dedicated
user.
Returned by the org SA list endpoint so the UI can render the `Access`
column ("N project(s)") for project-scoped SAs without a follow-up
per-SA fan-out. Zero for Organization-scoped SAs, which is the natural
shape (they have no project grants).'
ProjectMemberRole:
enum:
- viewer
- interactive_viewer
- editor
- developer
- admin
type: string
ServiceAccountProjectGrant:
properties:
roleName:
type: string
roleUuid:
type: string
role:
$ref: '#/components/schemas/ProjectMemberRole'
projectName:
type: string
projectUuid:
type: string
required:
- projectName
- projectUuid
type: object
description: 'One row in the per-SA project-grants list. The project name comes
from a
join on `projects`. A grant is either a system role (the `ProjectMemberRole`
enum used everywhere else) or a custom role (a `role_uuid` pointing at the
org''s `roles` table, with the role''s display name resolved server-side so
the UI doesn''t need a follow-up lookup).
Exactly one of (`role`) or (`roleUuid`+`roleName`) is set on each row. We
model the optional fields rather than a strict discriminated union with
`never` because tsoa (the OpenAPI generator) doesn''t understand TS''s
`?: never` idiom and would refuse to render the schema. Consumers should
narrow via `''roleUuid'' in grant` rather than relying on TS exhaustiveness.'
ApiServiceAccountProjectGrantsResponse:
properties:
results:
items:
$ref: '#/components/schemas/ServiceAccountProjectGrant'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_ServiceAccount.expiresAt-or-description_:
properties:
expiresAt:
type: string
format: date-time
nullable: true
description:
type: string
required:
- expiresAt
- description
type: object
description: From T, pick a set of properties whose keys are in the union K
ServiceAccountProjectAccessInput:
properties:
roleUuid:
type: string
role:
$ref: '#/components/schemas/ProjectMemberRole'
projectUuid:
type: string
required:
- projectUuid
type: object
description: 'Project-scoped grant for a Member-shape SA. When `projectAccess`
is non-empty
on a create request, `scopes` must be `[''system:member'']` — any other scope
combination is rejected at the service layer so the SA''s effective access
is
unambiguously project-only.
Each grant must carry exactly one of `role` (system) or `roleUuid` (custom).
The XOR is enforced at the service layer (compile-time `never` discriminator
unions are not used here — see note on `ServiceAccountProjectGrant`).
Mixed grants across the same `projectAccess` array are allowed — e.g. one
project on stock Viewer and another on a custom role.'
ApiCreateServiceAccountRequest:
allOf:
- $ref: '#/components/schemas/Pick_ServiceAccount.expiresAt-or-description_'
- properties:
projectAccess:
items:
$ref: '#/components/schemas/ServiceAccountProjectAccessInput'
type: array
roleUuid:
type: string
nullable: true
scopes:
items:
$ref: '#/components/schemas/ServiceAccountScope'
type: array
type: object
Pick_ServiceAccount.description_:
properties:
description:
type: string
required:
- description
type: object
description: From T, pick a set of properties whose keys are in the union K
UpdateServiceAccount:
allOf:
- $ref: '#/components/schemas/Pick_ServiceAccount.description_'
- properties:
projectAccess:
items:
$ref: '#/components/schemas/ServiceAccountProjectAccessInput'
type: array
roleUuid:
type: string
nullable: true
scopes:
items:
$ref: '#/components/schemas/ServiceAccountScope'
type: array
type: object
description: "In-place edit of a service account's name, permissions, and project\
\ access,\nwithout rotating its token. `description` is always applied. The\
\ rest is\ntarget-shaped — the payload describes what the SA should become,\
\ and the SA\ncan move between scope modes:\n\n- `projectAccess` (or `scopes\
\ = [system:member]`) → project-scoped: replace\n its project grants (≥1\
\ required), keeping `scopes = [system:member]`.\n Sending an org `roleUuid`\
\ / non-member `scopes` alongside is rejected.\n- org `scopes` (preset) or\
\ `roleUuid` (custom role) → organization-scoped:\n set the org permission\
\ and drop any project grants.\n- neither → rename only, preserving the current\
\ mode and permission.\n\nThe token and expiry are never touched."
ApiUpdateServiceAccountRequest:
$ref: '#/components/schemas/UpdateServiceAccount'
ServiceAccountWithToken:
allOf:
- $ref: '#/components/schemas/ServiceAccount'
- properties:
token:
type: string
required:
- token
type: object
ScimSchemaType.LIST_RESPONSE:
enum:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
type: string
ScimUserRole:
properties:
value:
type: string
display:
type: string
type:
type: string
primary:
type: boolean
required:
- value
type: object
additionalProperties: true
LightdashScimExtension:
properties:
role:
type: string
deprecated: true
type: object
additionalProperties: true
ScimUser:
properties:
schemas:
items:
type: string
type: array
id:
type: string
meta:
properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
userName:
type: string
name:
properties:
familyName:
type: string
givenName:
type: string
type: object
active:
type: boolean
emails:
items:
properties:
primary:
type: boolean
value:
type: string
required:
- value
type: object
type: array
roles:
items:
$ref: '#/components/schemas/ScimUserRole'
type: array
urn:lightdash:params:scim:schemas:extension:2.0:User:
$ref: '#/components/schemas/LightdashScimExtension'
required:
- schemas
- id
- userName
type: object
additionalProperties: true
ScimListResponse_ScimUser_:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.LIST_RESPONSE'
type: array
totalResults:
type: number
format: double
itemsPerPage:
type: number
format: double
startIndex:
type: number
format: double
Resources:
items:
$ref: '#/components/schemas/ScimUser'
type: array
required:
- schemas
- totalResults
- itemsPerPage
- startIndex
- Resources
type: object
additionalProperties: true
ScimSchemaType.ERROR:
enum:
- urn:ietf:params:scim:api:messages:2.0:Error
type: string
ScimErrorPayload:
properties:
status:
type: string
description: 'HTTP status code as a string, indicating the status of the
response.
For example: "400" for bad requests, "404" for not found, "500" for server
errors.'
detail:
type: string
description: Human-readable description of the error, providing details
about why the error occurred.
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.ERROR'
type: array
description: 'Array of schema URIs that describe the structure of the SCIM
error response.
Typically includes "urn:ietf:params:scim:api:messages:2.0:Error".'
scimType:
type: string
enum:
- invalidFilter
- tooMany
- uniqueness
- mutability
- invalidSyntax
- invalidPath
- noTarget
- invalidValue
- invalidVers
- sensitive
description: "NOTE: this is taken from the SCIM spec here: https://datatracker.ietf.org/doc/html/rfc7644#section-3.7.3\n\
A SCIM-specific error type that provides additional context for the error.\n\
- 'invalidFilter': The specified filter syntax was invalid or the attribute\
\ and comparison combination is not supported.\n Applicable for GET (Section\
\ 3.4.2), POST (Search - Section 3.4.3), PATCH (Path Filter - Section\
\ 3.5.2).\n- 'tooMany': The filter yields too many results for the server\
\ to process.\n Applicable for GET (Section 3.4.2), POST (Search - Section\
\ 3.4.3).\n- 'uniqueness': One or more attribute values are already in\
\ use or reserved.\n Applicable for POST (Create - Section 3.3), PUT\
\ (Section 3.5.1), PATCH (Section 3.5.2).\n- 'mutability': The modification\
\ is incompatible with the target attribute's mutability.\n Applicable\
\ for PUT (Section 3.5.1), PATCH (Section 3.5.2).\n- 'invalidSyntax':\
\ The request body structure was invalid or did not conform to the schema.\n\
\ Applicable for POST (Search - Section 3.4.3, Create - Section 3.3,\
\ Bulk - Section 3.7), PUT (Section 3.5.1).\n- 'invalidPath': The \"path\"\
\ attribute was invalid or malformed.\n Applicable for PATCH (Section\
\ 3.5.2).\n- 'noTarget': The specified \"path\" did not yield an attribute\
\ that could be operated on.\n Applicable for PATCH (Section 3.5.2).\n\
- 'invalidValue': A required value was missing, or the value specified\
\ was not compatible with the operation.\n Applicable for GET (Section\
\ 3.4.2), POST (Create - Section 3.3, Query - Section 3.4.3), PUT (Section\
\ 3.5.1), PATCH (Section 3.5.2).\n- 'invalidVers': The specified SCIM\
\ protocol version is not supported.\n Applicable for GET (Section 3.4.2),\
\ POST (ALL), PUT (Section 3.5.1), PATCH (Section 3.5.2), DELETE (Section\
\ 3.6).\n- 'sensitive': The request cannot be completed due to sensitive\
\ information passed in the URI.\n Applicable for GET (Section 3.4.2)."
required:
- status
- detail
- schemas
type: object
Pick_ScimUser.Exclude_keyofScimUser.id__:
properties:
urn:lightdash:params:scim:schemas:extension:2.0:User:
$ref: '#/components/schemas/LightdashScimExtension'
schemas:
items:
type: string
type: array
userName:
type: string
name:
properties:
familyName:
type: string
givenName:
type: string
type: object
active:
type: boolean
emails:
items:
properties:
primary:
type: boolean
value:
type: string
required:
- value
type: object
type: array
roles:
items:
$ref: '#/components/schemas/ScimUserRole'
type: array
meta:
properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
required:
- schemas
- userName
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_ScimUser.id_:
$ref: '#/components/schemas/Pick_ScimUser.Exclude_keyofScimUser.id__'
description: Construct a type with the properties of T except for those in type
K.
ScimUpsertUser:
allOf:
- $ref: '#/components/schemas/Omit_ScimUser.id_'
- properties:
title:
type: string
password:
type: string
type: object
ScimPatchSchema:
type: string
enum:
- urn:ietf:params:scim:api:messages:2.0:PatchOp
nullable: false
ScimPatchRemoveOperation:
properties:
op:
type: string
enum:
- remove
- Remove
path:
type: string
value: {}
required:
- op
- path
type: object
additionalProperties: true
ScimPatchAddReplaceOperation:
properties:
op:
type: string
enum:
- add
- Add
- replace
- Replace
path:
type: string
value: {}
required:
- op
type: object
additionalProperties: true
ScimPatchOperation:
anyOf:
- $ref: '#/components/schemas/ScimPatchRemoveOperation'
- $ref: '#/components/schemas/ScimPatchAddReplaceOperation'
ScimPatch:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimPatchSchema'
type: array
Operations:
items:
$ref: '#/components/schemas/ScimPatchOperation'
type: array
required:
- schemas
- Operations
type: object
additionalProperties: true
ScimSchemaType.SERVICE_PROVIDER_CONFIG:
enum:
- urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig
type: string
ScimServiceProviderConfig:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.SERVICE_PROVIDER_CONFIG'
type: array
documentationUri:
type: string
patch:
properties:
supported:
type: boolean
required:
- supported
type: object
bulk:
properties:
maxPayloadSize:
type: number
format: double
maxOperations:
type: number
format: double
supported:
type: boolean
required:
- supported
type: object
filter:
properties:
maxResults:
type: number
format: double
supported:
type: boolean
required:
- supported
type: object
changePassword:
properties:
supported:
type: boolean
required:
- supported
type: object
sort:
properties:
supported:
type: boolean
required:
- supported
type: object
etag:
properties:
supported:
type: boolean
required:
- supported
type: object
authenticationSchemes:
items:
properties:
primary:
type: boolean
documentationUri:
type: string
specUri:
type: string
description:
type: string
name:
type: string
type:
type: string
required:
- description
- name
- type
type: object
type: array
required:
- schemas
- patch
- bulk
- filter
- changePassword
- sort
- etag
- authenticationSchemes
type: object
additionalProperties: true
ScimSchemaType.SCHEMA:
enum:
- urn:ietf:params:scim:schemas:core:2.0:Schema
type: string
ScimSchemaAttribute:
properties:
name:
type: string
type:
type: string
enum:
- string
- boolean
- decimal
- integer
- dateTime
- reference
- complex
multiValued:
type: boolean
description:
type: string
required:
type: boolean
canonicalValues:
items:
type: string
type: array
caseExact:
type: boolean
mutability:
type: string
enum:
- readOnly
- readWrite
- immutable
- writeOnly
returned:
type: string
enum:
- always
- never
- default
- request
uniqueness:
type: string
enum:
- none
- server
- global
subAttributes:
items:
$ref: '#/components/schemas/ScimSchemaAttribute'
type: array
required:
- name
- type
- multiValued
- required
- caseExact
- mutability
- returned
- uniqueness
type: object
additionalProperties: true
ScimSchema:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.SCHEMA'
type: array
id:
type: string
meta:
properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
name:
type: string
description:
type: string
attributes:
items:
$ref: '#/components/schemas/ScimSchemaAttribute'
type: array
required:
- schemas
- id
- attributes
type: object
additionalProperties: true
ScimListResponse_ScimSchema_:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.LIST_RESPONSE'
type: array
totalResults:
type: number
format: double
itemsPerPage:
type: number
format: double
startIndex:
type: number
format: double
Resources:
items:
$ref: '#/components/schemas/ScimSchema'
type: array
required:
- schemas
- totalResults
- itemsPerPage
- startIndex
- Resources
type: object
additionalProperties: true
ScimSchemaType.RESOURCE_TYPE:
enum:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
type: string
ScimResourceType:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.RESOURCE_TYPE'
type: array
id:
type: string
meta:
properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
name:
type: string
description:
type: string
endpoint:
type: string
schema:
type: string
schemaExtensions:
items:
properties:
required:
type: boolean
schema:
type: string
required:
- required
- schema
type: object
type: array
required:
- schemas
- id
- name
- endpoint
- schema
type: object
additionalProperties: true
ScimListResponse_ScimResourceType_:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.LIST_RESPONSE'
type: array
totalResults:
type: number
format: double
itemsPerPage:
type: number
format: double
startIndex:
type: number
format: double
Resources:
items:
$ref: '#/components/schemas/ScimResourceType'
type: array
required:
- schemas
- totalResults
- itemsPerPage
- startIndex
- Resources
type: object
additionalProperties: true
ScimSchemaType.ROLE:
enum:
- urn:ietf:params:scim:schemas:extension:2.0:Role
type: string
ScimRole:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.ROLE'
type: array
id:
type: string
meta:
allOf:
- properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
- properties:
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
enum:
- Role
nullable: false
required:
- location
- resourceType
type: object
value:
type: string
display:
type: string
type:
type: string
supported:
type: boolean
required:
- schemas
- id
- value
- supported
- meta
type: object
additionalProperties: true
ScimListResponse_ScimRole_:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.LIST_RESPONSE'
type: array
totalResults:
type: number
format: double
itemsPerPage:
type: number
format: double
startIndex:
type: number
format: double
Resources:
items:
$ref: '#/components/schemas/ScimRole'
type: array
required:
- schemas
- totalResults
- itemsPerPage
- startIndex
- Resources
type: object
additionalProperties: true
ApiCreateScimServiceAccountRequest:
$ref: '#/components/schemas/Pick_ServiceAccount.expiresAt-or-description_'
ScimGroupMember:
properties:
value:
type: string
display:
type: string
required:
- value
type: object
additionalProperties: true
ScimGroup:
properties:
schemas:
items:
type: string
type: array
id:
type: string
meta:
allOf:
- properties:
version:
type: string
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
type: object
- properties:
location:
type: string
lastModified:
type: string
format: date-time
created:
type: string
format: date-time
resourceType:
type: string
enum:
- Group
nullable: false
required:
- location
- lastModified
- created
- resourceType
type: object
displayName:
type: string
members:
items:
$ref: '#/components/schemas/ScimGroupMember'
type: array
required:
- schemas
- id
- displayName
- meta
type: object
additionalProperties: true
ScimListResponse_ScimGroup_:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.LIST_RESPONSE'
type: array
totalResults:
type: number
format: double
itemsPerPage:
type: number
format: double
startIndex:
type: number
format: double
Resources:
items:
$ref: '#/components/schemas/ScimGroup'
type: array
required:
- schemas
- totalResults
- itemsPerPage
- startIndex
- Resources
type: object
additionalProperties: true
ScimSchemaType.GROUP:
enum:
- urn:ietf:params:scim:schemas:core:2.0:Group
type: string
ScimUpsertGroup:
properties:
schemas:
items:
$ref: '#/components/schemas/ScimSchemaType.GROUP'
type: array
displayName:
type: string
members:
items:
$ref: '#/components/schemas/ScimGroupMember'
type: array
required:
- schemas
- displayName
type: object
additionalProperties: true
ManagedAgentScheduleOption:
enum:
- every_6_hours
- every_12_hours
- daily
- every_2_days
- weekly
type: string
Record_string.boolean_:
properties: {}
additionalProperties:
type: boolean
type: object
description: Construct a type with a set of properties K of type T
ManagedAgentSettings:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
toolSettings:
$ref: '#/components/schemas/Record_string.boolean_'
slackChannelId:
type: string
nullable: true
enabledByUserUuid:
type: string
nullable: true
schedule:
$ref: '#/components/schemas/ManagedAgentScheduleOption'
enabled:
type: boolean
projectUuid:
type: string
required:
- updatedAt
- createdAt
- toolSettings
- slackChannelId
- enabledByUserUuid
- schedule
- enabled
- projectUuid
type: object
UpdateManagedAgentSettings:
properties:
toolSettings:
$ref: '#/components/schemas/Record_string.boolean_'
slackChannelId:
type: string
nullable: true
schedule:
$ref: '#/components/schemas/ManagedAgentScheduleOption'
enabled:
type: boolean
type: object
ManagedAgentRunTriggeredBy:
type: string
enum:
- cron
- manual
- on_enable
ManagedAgentRunStatus:
enum:
- started
- completed
- error
type: string
Partial_Record_ManagedAgentActionType.number__:
properties:
flagged_stale:
type: number
format: double
soft_deleted:
type: number
format: double
flagged_broken:
type: number
format: double
flagged_slow:
type: number
format: double
fixed_broken:
type: number
format: double
created_content:
type: number
format: double
insight:
type: number
format: double
type: object
description: Make all properties in T optional
ManagedAgentRun:
properties:
currentActivity:
type: string
nullable: true
error:
type: string
nullable: true
summary:
type: string
nullable: true
actionCountsByType:
$ref: '#/components/schemas/Partial_Record_ManagedAgentActionType.number__'
actionCount:
type: number
format: double
finishedAt:
type: string
format: date-time
nullable: true
startedAt:
type: string
format: date-time
sessionId:
type: string
nullable: true
status:
$ref: '#/components/schemas/ManagedAgentRunStatus'
triggeredBy:
$ref: '#/components/schemas/ManagedAgentRunTriggeredBy'
projectUuid:
type: string
runUuid:
type: string
required:
- currentActivity
- error
- summary
- actionCountsByType
- actionCount
- finishedAt
- startedAt
- sessionId
- status
- triggeredBy
- projectUuid
- runUuid
type: object
ManagedAgentRunsListResponse:
properties:
nextCursor:
type: string
nullable: true
runs:
items:
$ref: '#/components/schemas/ManagedAgentRun'
type: array
required:
- nextCursor
- runs
type: object
ManagedAgentActionType:
enum:
- flagged_stale
- soft_deleted
- flagged_broken
- flagged_slow
- fixed_broken
- created_content
- insight
type: string
ManagedAgentTargetType:
enum:
- chart
- dashboard
- space
- project
type: string
Record_string.unknown_:
properties: {}
additionalProperties: {}
type: object
description: Construct a type with a set of properties K of type T
ManagedAgentActionUser:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
ManagedAgentAction:
properties:
createdAt:
type: string
format: date-time
reversedByUser:
allOf:
- $ref: '#/components/schemas/ManagedAgentActionUser'
nullable: true
reversedByUserUuid:
type: string
nullable: true
reversedAt:
type: string
format: date-time
nullable: true
metadata:
$ref: '#/components/schemas/Record_string.unknown_'
description:
type: string
targetName:
type: string
targetUuid:
type: string
targetType:
$ref: '#/components/schemas/ManagedAgentTargetType'
actionType:
$ref: '#/components/schemas/ManagedAgentActionType'
sessionId:
type: string
projectUuid:
type: string
actionUuid:
type: string
required:
- createdAt
- reversedByUser
- reversedByUserUuid
- reversedAt
- metadata
- description
- targetName
- targetUuid
- targetType
- actionType
- sessionId
- projectUuid
- actionUuid
type: object
Pick_Organization.name-or-createdAt-or-organizationUuid_:
properties:
name:
type: string
description: The name of the organization
createdAt:
type: string
format: date-time
organizationUuid:
type: string
description: The unique identifier of the organization
format: uuid
required:
- name
- organizationUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_LightdashUser.userUuid-or-firstName-or-lastName_:
properties: {}
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Embed.Exclude_keyofEmbed.encodedSecret__:
properties:
projectUuid:
type: string
organization:
$ref: '#/components/schemas/Pick_Organization.name-or-createdAt-or-organizationUuid_'
dashboardUuids:
items:
type: string
type: array
allowAllDashboards:
type: boolean
chartUuids:
items:
type: string
type: array
allowAllCharts:
type: boolean
createdAt:
type: string
user:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
required:
- projectUuid
- organization
- dashboardUuids
- allowAllDashboards
- chartUuids
- allowAllCharts
- createdAt
- user
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Embed.encodedSecret_:
$ref: '#/components/schemas/Pick_Embed.Exclude_keyofEmbed.encodedSecret__'
description: Construct a type with the properties of T except for those in type
K.
DecodedEmbed:
allOf:
- $ref: '#/components/schemas/Omit_Embed.encodedSecret_'
- properties:
secret:
type: string
encodedSecret: {}
required:
- secret
type: object
ApiEmbedConfigResponse:
properties:
results:
$ref: '#/components/schemas/DecodedEmbed'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateEmbedRequestBody:
properties:
chartUuids:
items:
type: string
type: array
dashboardUuids:
items:
type: string
type: array
type: object
UpdateEmbed:
properties:
allowAllCharts:
type: boolean
chartUuids:
items:
type: string
type: array
allowAllDashboards:
type: boolean
dashboardUuids:
items:
type: string
type: array
required:
- allowAllDashboards
- dashboardUuids
type: object
EmbedUrl:
properties:
url:
type: string
required:
- url
type: object
ApiEmbedUrlResponse:
properties:
results:
$ref: '#/components/schemas/EmbedUrl'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FilterInteractivityValues:
enum:
- some
- all
- none
type: string
CommonEmbedJwtContent:
properties:
stickyHeader:
type: boolean
canViewDataApps:
type: boolean
canViewUnderlyingData:
type: boolean
canExplore:
type: boolean
canExportPagePdf:
type: boolean
canDateZoom:
type: boolean
canExportImages:
type: boolean
canExportCsv:
type: boolean
parameterInteractivity:
properties:
enabled:
type: boolean
required:
- enabled
type: object
dashboardFiltersInteractivity:
properties:
hidden:
type: boolean
allowedFilters:
items:
type: string
type: array
nullable: true
enabled:
anyOf:
- $ref: '#/components/schemas/FilterInteractivityValues'
- type: boolean
required:
- enabled
type: object
isPreview:
type: boolean
projectUuid:
type: string
type:
type: string
enum:
- dashboard
nullable: false
required:
- type
type: object
EmbedJwtContentDashboardUuid:
allOf:
- $ref: '#/components/schemas/CommonEmbedJwtContent'
- properties:
dashboardUuid:
type: string
required:
- dashboardUuid
type: object
EmbedJwtContentDashboardSlug:
allOf:
- $ref: '#/components/schemas/CommonEmbedJwtContent'
- properties:
dashboardSlug:
type: string
required:
- dashboardSlug
type: object
CommonChartEmbedJwtContent:
properties:
canViewUnderlyingData:
type: boolean
canExportImages:
type: boolean
canExportCsv:
type: boolean
parameterInteractivity: {}
dashboardFiltersInteractivity: {}
scopes:
items:
type: string
type: array
isPreview:
type: boolean
projectUuid:
type: string
type:
type: string
enum:
- chart
nullable: false
required:
- type
type: object
EmbedJwtContentChart:
allOf:
- $ref: '#/components/schemas/CommonChartEmbedJwtContent'
- properties:
contentId:
type: string
required:
- contentId
type: object
EmbedWriteActions:
properties:
spaceUuid:
type: string
userUuid:
type: string
serviceAccountUserUuid:
type: string
required:
- spaceUuid
type: object
CreateEmbedJwt:
properties:
exp:
type: number
format: double
iat:
type: number
format: double
expiresIn:
type: string
user:
properties:
externalId:
type: string
email:
type: string
type: object
userAttributes:
properties: {}
additionalProperties:
type: string
type: object
writeActions:
$ref: '#/components/schemas/EmbedWriteActions'
content:
anyOf:
- $ref: '#/components/schemas/EmbedJwtContentDashboardUuid'
- $ref: '#/components/schemas/EmbedJwtContentDashboardSlug'
- $ref: '#/components/schemas/EmbedJwtContentChart'
required:
- content
type: object
ContentVerificationInfo:
properties:
verifiedAt:
type: string
format: date-time
verifiedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
required:
- verifiedAt
- verifiedBy
type: object
DashboardTileTypes:
enum:
- saved_chart
- sql_chart
- markdown
- loom
- heading
- data_app
type: string
Required_CreateDashboardTileBase_:
properties:
uuid:
type: string
type:
$ref: '#/components/schemas/DashboardTileTypes'
x:
type: number
format: double
y:
type: number
format: double
h:
type: number
format: double
w:
type: number
format: double
tabUuid:
type: string
nullable: true
required:
- uuid
- type
- x
- y
- h
- w
type: object
description: Make all properties in T required
DashboardTileBase:
$ref: '#/components/schemas/Required_CreateDashboardTileBase_'
DashboardTileTypes.SAVED_CHART:
enum:
- saved_chart
type: string
ChartKind:
enum:
- line
- horizontal_bar
- vertical_bar
- scatter
- area
- mixed
- pie
- table
- big_number
- funnel
- custom
- treemap
- gauge
- map
- sankey
type: string
DashboardChartTileProperties:
properties:
properties:
properties:
chartSlug:
type: string
nullable: true
lastVersionChartKind:
allOf:
- $ref: '#/components/schemas/ChartKind'
nullable: true
chartName:
type: string
nullable: true
belongsToDashboard:
type: boolean
savedChartUuid:
type: string
nullable: true
hideTitle:
type: boolean
title:
type: string
required:
- savedChartUuid
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
required:
- properties
- type
type: object
DashboardChartTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardChartTileProperties'
DashboardTileTypes.MARKDOWN:
enum:
- markdown
type: string
DashboardMarkdownTileProperties:
properties:
properties:
properties:
hideFrame:
type: boolean
content:
type: string
title:
type: string
required:
- content
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.MARKDOWN'
required:
- properties
- type
type: object
DashboardMarkdownTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardMarkdownTileProperties'
DashboardTileTypes.LOOM:
enum:
- loom
type: string
DashboardLoomTileProperties:
properties:
properties:
properties:
url:
type: string
hideTitle:
type: boolean
title:
type: string
required:
- url
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.LOOM'
required:
- properties
- type
type: object
DashboardLoomTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardLoomTileProperties'
DashboardTileTypes.SQL_CHART:
enum:
- sql_chart
type: string
DashboardSqlChartTileProperties:
properties:
properties:
properties:
chartSlug:
type: string
nullable: true
hideTitle:
type: boolean
chartName:
type: string
savedSqlUuid:
type: string
nullable: true
title:
type: string
required:
- chartName
- savedSqlUuid
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.SQL_CHART'
required:
- properties
- type
type: object
DashboardSqlChartTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardSqlChartTileProperties'
DashboardTileTypes.HEADING:
enum:
- heading
type: string
DashboardHeadingTileProperties:
properties:
properties:
properties:
showDivider:
type: boolean
text:
type: string
title: {}
required:
- text
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.HEADING'
required:
- properties
- type
type: object
DashboardHeadingTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardHeadingTileProperties'
DashboardTileTypes.DATA_APP:
enum:
- data_app
type: string
DashboardDataAppTileProperties:
properties:
properties:
properties:
appDeletedAt:
type: string
nullable: true
appUuid:
type: string
hideTitle:
type: boolean
title:
type: string
required:
- appUuid
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.DATA_APP'
required:
- properties
- type
type: object
DashboardDataAppTile:
allOf:
- $ref: '#/components/schemas/DashboardTileBase'
- $ref: '#/components/schemas/DashboardDataAppTileProperties'
DashboardTile:
anyOf:
- $ref: '#/components/schemas/DashboardChartTile'
- $ref: '#/components/schemas/DashboardMarkdownTile'
- $ref: '#/components/schemas/DashboardLoomTile'
- $ref: '#/components/schemas/DashboardSqlChartTile'
- $ref: '#/components/schemas/DashboardHeadingTile'
- $ref: '#/components/schemas/DashboardDataAppTile'
DimensionType:
enum:
- string
- number
- timestamp
- date
- boolean
type: string
DashboardFieldTarget:
properties:
fallbackType:
$ref: '#/components/schemas/DimensionType'
isSqlColumn:
type: boolean
tableName:
type: string
fieldId:
type: string
required:
- tableName
- fieldId
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
FilterRule_FilterOperator.DashboardFieldTarget.AnyType.AnyType_:
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:
$ref: '#/components/schemas/DashboardFieldTarget'
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
DashboardTileTarget:
anyOf:
- $ref: '#/components/schemas/DashboardFieldTarget'
- type: boolean
enum:
- false
Record_string.DashboardTileTarget_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/DashboardTileTarget'
type: object
description: Construct a type with a set of properties K of type T
DashboardFilterRule:
allOf:
- $ref: '#/components/schemas/FilterRule_FilterOperator.DashboardFieldTarget.AnyType.AnyType_'
- properties:
lockedTabUuids:
items:
type: string
type: array
description: 'Tab UUIDs where this filter is locked. When the active tab
is in this
list, viewers see the filter but cannot change it, and URL / embed
filter overrides targeting the same field are ignored on that tab.
Empty or omitted means the filter is not locked anywhere.'
singleValue:
type: boolean
label:
type: string
tileTargets:
$ref: '#/components/schemas/Record_string.DashboardTileTarget_'
type: object
DashboardFilters:
properties:
tableCalculations:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
metrics:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
dimensions:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
required:
- tableCalculations
- metrics
- dimensions
type: object
ParameterValue:
anyOf:
- type: string
- type: number
format: double
- items:
type: string
type: array
- items:
type: number
format: double
type: array
DashboardParameterValue:
properties:
value:
$ref: '#/components/schemas/ParameterValue'
parameterName:
type: string
required:
- value
- parameterName
type: object
Record_string.DashboardParameterValue_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/DashboardParameterValue'
type: object
description: Construct a type with a set of properties K of type T
DashboardParameters:
$ref: '#/components/schemas/Record_string.DashboardParameterValue_'
UpdatedByUser:
properties:
userUuid:
type: string
firstName:
type: string
lastName:
type: string
required:
- userUuid
- firstName
- lastName
type: object
additionalProperties: true
DashboardTab:
properties:
hidden:
type: boolean
order:
type: number
format: double
minimum: 0
name:
type: string
minLength: 1
uuid:
type: string
required:
- order
- name
- uuid
type: object
SpaceMemberRole:
enum:
- viewer
- editor
- admin
type: string
OrganizationMemberRole:
enum:
- member
- viewer
- interactive_viewer
- editor
- developer
- admin
type: string
SpaceAccess:
properties:
inheritedFrom:
type: string
enum:
- organization
- project
- group
- space_group
- parent_space
inheritedRole:
anyOf:
- $ref: '#/components/schemas/OrganizationMemberRole'
- $ref: '#/components/schemas/ProjectMemberRole'
projectRole:
$ref: '#/components/schemas/ProjectMemberRole'
hasDirectAccess:
type: boolean
role:
$ref: '#/components/schemas/SpaceMemberRole'
userUuid:
type: string
required:
- hasDirectAccess
- role
- userUuid
type: object
DateGranularity:
enum:
- Second
- Minute
- Hour
- Day
- Week
- Month
- Quarter
- Year
type: string
DashboardConfig:
properties:
defaultDateZoomGranularity:
anyOf:
- $ref: '#/components/schemas/DateGranularity'
- type: string
dateZoomGranularities:
items:
anyOf:
- $ref: '#/components/schemas/DateGranularity'
- type: string
type: array
parameterOrder:
items:
type: string
type: array
pinnedParameters:
items:
type: string
type: array
isAddFilterDisabled:
type: boolean
isDateZoomDisabled:
type: boolean
required:
- isDateZoomDisabled
type: object
Dashboard:
properties:
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
colorPaletteUuid:
type: string
nullable: true
config:
$ref: '#/components/schemas/DashboardConfig'
slug:
type: string
access:
items:
$ref: '#/components/schemas/SpaceAccess'
type: array
nullable: true
inheritsFromOrgOrProject:
type: boolean
tabs:
items:
$ref: '#/components/schemas/DashboardTab'
type: array
pinnedListOrder:
type: number
format: double
nullable: true
pinnedListUuid:
type: string
nullable: true
firstViewedAt:
anyOf:
- type: string
format: date-time
- type: string
nullable: true
views:
type: number
format: double
spaceName:
type: string
spaceUuid:
type: string
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
parameters:
$ref: '#/components/schemas/DashboardParameters'
filters:
$ref: '#/components/schemas/DashboardFilters'
tiles:
items:
$ref: '#/components/schemas/DashboardTile'
type: array
updatedAt:
type: string
format: date-time
description:
type: string
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
name:
type: string
uuid:
type: string
versionUuid:
type: string
dashboardVersionId:
type: number
format: double
projectUuid:
type: string
organizationUuid:
type: string
required:
- colorPaletteUuid
- slug
- access
- inheritsFromOrgOrProject
- tabs
- pinnedListOrder
- pinnedListUuid
- firstViewedAt
- views
- spaceName
- spaceUuid
- filters
- tiles
- updatedAt
- verification
- name
- uuid
- versionUuid
- dashboardVersionId
- projectUuid
- organizationUuid
type: object
Pick_OrganizationColorPalette.colors-or-darkColors_:
properties:
colors:
items:
type: string
type: array
darkColors:
items:
type: string
type: array
nullable: true
required:
- colors
- darkColors
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiEmbedDashboardResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/Dashboard'
- properties:
selectedPalette:
allOf:
- $ref: '#/components/schemas/Pick_OrganizationColorPalette.colors-or-darkColors_'
nullable: true
canViewUnderlyingData:
type: boolean
canExplore:
type: boolean
canDateZoom:
type: boolean
canExportPagePdf:
type: boolean
canExportImages:
type: boolean
canExportCsv:
type: boolean
parameterInteractivity:
properties:
enabled:
type: boolean
required:
- enabled
type: object
dashboardFiltersInteractivity:
properties:
hidden:
type: boolean
allowedFilters:
items:
type: string
type: array
nullable: true
enabled:
anyOf:
- $ref: '#/components/schemas/FilterInteractivityValues'
- type: boolean
required:
- enabled
type: object
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
GetEmbedDashboardRequest:
properties:
paletteUuid:
type: string
type: object
Record_string.number-Array_:
properties: {}
additionalProperties:
items:
type: number
format: double
type: array
type: object
description: Construct a type with a set of properties K of type T
DimensionType.STRING:
enum:
- string
type: string
DimensionType.NUMBER:
enum:
- number
type: string
DimensionType.DATE:
enum:
- date
type: string
DimensionType.TIMESTAMP:
enum:
- timestamp
type: string
DimensionType.BOOLEAN:
enum:
- boolean
type: string
FieldType.DIMENSION:
enum:
- dimension
type: string
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
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
Record_string.string_:
properties: {}
additionalProperties:
type: string
type: object
description: Construct a type with a set of properties K of type T
CustomFormatType:
enum:
- default
- percent
- currency
- number
- id
- date
- timestamp
- bytes_si
- bytes_iec
- custom
type: string
NumberSeparator:
enum:
- default
- commaPeriod
- spacePeriod
- periodComma
- noSeparatorPeriod
- apostrophePeriod
type: string
Compact:
enum:
- thousands
- millions
- billions
- trillions
- kilobytes
- megabytes
- gigabytes
- terabytes
- petabytes
- kibibytes
- mebibytes
- gibibytes
- tebibytes
- pebibytes
type: string
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
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
FieldType:
enum:
- metric
- dimension
type: string
SourcePosition:
properties:
character:
type: number
format: double
line:
type: number
format: double
required:
- character
- line
type: object
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
Format:
enum:
- km
- mi
- usd
- gbp
- eur
- jpy
- dkk
- id
- percent
type: string
FieldUrl:
properties:
label:
type: string
url:
type: string
required:
- label
- url
type: object
FilterableDimension:
properties:
fieldType:
$ref: '#/components/schemas/FieldType.DIMENSION'
type:
anyOf:
- $ref: '#/components/schemas/DimensionType.STRING'
- $ref: '#/components/schemas/DimensionType.NUMBER'
- $ref: '#/components/schemas/DimensionType.DATE'
- $ref: '#/components/schemas/DimensionType.TIMESTAMP'
- $ref: '#/components/schemas/DimensionType.BOOLEAN'
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
group:
type: string
deprecated: true
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
timeInterval:
$ref: '#/components/schemas/TimeFrames'
timeIntervalBaseDimensionName:
type: string
timeIntervalBaseDimensionType:
$ref: '#/components/schemas/DimensionType'
customTimeInterval:
type: string
isAdditionalDimension:
type: boolean
skipTimezoneConversion:
type: boolean
colors:
$ref: '#/components/schemas/Record_string.string_'
isIntervalBase:
type: boolean
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
formatOptions:
$ref: '#/components/schemas/CustomFormat'
caseSensitive:
type: boolean
image:
properties:
fit:
type: string
height:
type: number
format: double
width:
type: number
format: double
url:
type: string
required:
- url
type: object
richText:
type: string
spotlight:
properties:
segmentBy:
type: boolean
filterBy:
type: boolean
type: object
required:
- fieldType
- type
- name
- label
- table
- tableLabel
- sql
- hidden
type: object
additionalProperties: true
FieldType.METRIC:
enum:
- metric
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
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
DefaultTimeDimension:
properties:
interval:
$ref: '#/components/schemas/TimeFrames'
field:
type: string
required:
- interval
- field
type: object
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
DashboardAvailableFilters:
properties:
savedQueryMetricFilters:
$ref: '#/components/schemas/Record_string.number-Array_'
allFilterableMetrics:
items:
$ref: '#/components/schemas/Metric'
type: array
allFilterableFields:
items:
$ref: '#/components/schemas/FilterableDimension'
type: array
savedQueryFilters:
$ref: '#/components/schemas/Record_string.number-Array_'
required:
- savedQueryMetricFilters
- allFilterableMetrics
- allFilterableFields
- savedQueryFilters
type: object
ApiEmbedDashboardAvailableFiltersResponse:
properties:
results:
$ref: '#/components/schemas/DashboardAvailableFilters'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
SavedChartsInfoForDashboardAvailableFilters:
items:
properties:
savedChartUuid:
type: string
tileUuid:
type: string
required:
- savedChartUuid
- tileUuid
type: object
type: array
FieldId:
type: string
FilterGroup:
anyOf:
- $ref: '#/components/schemas/OrFilterGroup'
- $ref: '#/components/schemas/AndFilterGroup'
FieldTarget:
properties:
fieldId:
type: string
description: Field ID to filter on
required:
- fieldId
type: object
FilterRule:
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:
$ref: '#/components/schemas/FieldTarget'
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
FilterGroupItem:
anyOf:
- $ref: '#/components/schemas/FilterGroup'
- $ref: '#/components/schemas/FilterRule'
OrFilterGroup:
properties:
or:
items:
$ref: '#/components/schemas/FilterGroupItem'
type: array
description: Array of filters or nested groups combined with OR logic
id:
type: string
description: Unique identifier for the filter group
required:
- or
- id
type: object
AndFilterGroup:
properties:
and:
items:
$ref: '#/components/schemas/FilterGroupItem'
type: array
description: Array of filters or nested groups combined with AND logic
id:
type: string
description: Unique identifier for the filter group
required:
- and
- id
type: object
Filters:
properties:
tableCalculations:
$ref: '#/components/schemas/FilterGroup'
description: Table calculation filter group
metrics:
$ref: '#/components/schemas/FilterGroup'
description: Metric filter group
dimensions:
$ref: '#/components/schemas/FilterGroup'
description: Dimension filter group
type: object
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.'
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
TableCalculationType:
enum:
- number
- string
- date
- timestamp
- boolean
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
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
TableCalculationTemplateType.PERCENT_CHANGE_FROM_PREVIOUS:
enum:
- percent_change_from_previous
type: string
TableCalculationTemplateType.PERCENT_OF_PREVIOUS_VALUE:
enum:
- percent_of_previous_value
type: string
TableCalculationTemplateType.PERCENT_OF_COLUMN_TOTAL:
enum:
- percent_of_column_total
type: string
TableCalculationTemplateType.RANK_IN_COLUMN:
enum:
- rank_in_column
type: string
TableCalculationTemplateType.RUNNING_TOTAL:
enum:
- running_total
type: string
TableCalculationTemplateType.WINDOW_FUNCTION:
enum:
- window_function
type: string
WindowFunctionType:
enum:
- row_number
- percent_rank
- cume_dist
- rank
- sum
- avg
- count
- min
- max
type: string
FrameType:
enum:
- rows
- range
type: string
FrameBoundaryType:
enum:
- unbounded_preceding
- preceding
- current_row
- following
- unbounded_following
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
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
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
TemplateTableCalculation:
allOf:
- $ref: '#/components/schemas/TableCalculationBase'
- properties:
template:
$ref: '#/components/schemas/TableCalculationTemplate'
description: Template-based calculation (alternative to sql)
required:
- template
type: object
FormulaTableCalculation:
allOf:
- $ref: '#/components/schemas/TableCalculationBase'
- properties:
formula:
type: string
description: Spreadsheet-like formula compiled to SQL at query time
required:
- formula
type: object
TableCalculation:
anyOf:
- $ref: '#/components/schemas/SqlTableCalculation'
- $ref: '#/components/schemas/TemplateTableCalculation'
- $ref: '#/components/schemas/FormulaTableCalculation'
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
BinType.FIXED_NUMBER:
enum:
- fixed_number
type: string
CustomDimensionType.BIN:
enum:
- bin
type: string
CustomDimensionType:
enum:
- bin
- sql
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.FIXED_WIDTH:
enum:
- fixed_width
type: string
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
BinType.CUSTOM_RANGE:
enum:
- custom_range
type: string
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
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
BinType.CUSTOM_GROUP:
enum:
- custom_group
type: string
GroupValueMatchType:
enum:
- exact
- startsWith
- endsWith
- includes
type: string
GroupValueRule:
properties:
value:
type: string
matchType:
$ref: '#/components/schemas/GroupValueMatchType'
required:
- value
- matchType
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
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
CustomBinDimension:
anyOf:
- $ref: '#/components/schemas/FixedNumberBinDimension'
- $ref: '#/components/schemas/FixedWidthBinDimension'
- $ref: '#/components/schemas/CustomRangeBinDimension'
- $ref: '#/components/schemas/CustomGroupBinDimension'
CustomDimensionType.SQL:
enum:
- sql
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
CustomDimension:
anyOf:
- $ref: '#/components/schemas/CustomBinDimension'
- $ref: '#/components/schemas/CustomSqlDimension'
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
MetricOverrides:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Pick_Metric.formatOptions_'
type: object
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
DimensionOverrides:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Pick_Dimension.formatOptions_'
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
MetricQuery:
properties:
metadata:
properties:
hasADateDimension:
$ref: '#/components/schemas/Pick_CompiledDimension.label-or-name-or-table_'
required:
- hasADateDimension
type: object
pivotDimensions:
items:
$ref: '#/components/schemas/FieldId'
type: array
description: 'Dimension field IDs used as pivot columns (from chart''s pivotConfig.columns).
Used by row_total() to determine non-pivot dimensions for GROUP BY.'
timezone:
type: string
description: Timezone for date/time values (e.g., 'America/Los_Angeles',
'UTC')
dimensionOverrides:
$ref: '#/components/schemas/DimensionOverrides'
description: Override formatting options for existing dimensions
metricOverrides:
$ref: '#/components/schemas/MetricOverrides'
description: Override formatting options for existing metrics
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
description: Custom dimensions defined inline
additionalMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
description: Custom metrics defined inline (ad-hoc metrics not in the dbt
model)
tableCalculations:
items:
$ref: '#/components/schemas/TableCalculation'
type: array
description: Custom calculations to perform on query results
limit:
type: number
format: double
description: Maximum number of rows to return
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
description: Sort configuration for query results
filters:
$ref: '#/components/schemas/Filters'
description: Filter rules to apply to the query
metrics:
items:
$ref: '#/components/schemas/FieldId'
type: array
description: List of metric field IDs to include
dimensions:
items:
$ref: '#/components/schemas/FieldId'
type: array
description: List of dimension field IDs to include
exploreName:
type: string
description: The name of the explore to query
required:
- tableCalculations
- limit
- sorts
- filters
- metrics
- dimensions
- exploreName
type: object
ChartType.BIG_NUMBER:
enum:
- big_number
type: string
ComparisonFormatTypes:
enum:
- raw
- percentage
type: string
BaseFilterRule_FilterOperator.number-or-string_:
properties:
values:
items:
anyOf:
- type: number
format: double
- type: string
type: array
description: Values to filter by
operator:
$ref: '#/components/schemas/FilterOperator'
description: Filter operator
id:
type: string
description: Unique identifier for the filter rule
required:
- operator
- id
type: object
ConditionalFormattingWithValues_number-or-string_:
allOf:
- $ref: '#/components/schemas/BaseFilterRule_FilterOperator.number-or-string_'
- properties:
values:
items:
anyOf:
- type: number
format: double
- type: string
type: array
description: Values to compare against
required:
- values
type: object
ConditionalFormattingWithCompareTarget_number-or-string_:
allOf:
- $ref: '#/components/schemas/BaseFilterRule_FilterOperator.number-or-string_'
- properties:
values:
items:
anyOf:
- type: number
format: double
- type: string
type: array
description: Values to compare against
compareTarget:
allOf:
- $ref: '#/components/schemas/FieldTarget'
nullable: true
description: Target field to compare against
required:
- compareTarget
type: object
ConditionalFormattingWithFilterOperator:
anyOf:
- $ref: '#/components/schemas/ConditionalFormattingWithValues_number-or-string_'
- $ref: '#/components/schemas/ConditionalFormattingWithCompareTarget_number-or-string_'
ConditionalFormattingColorApplyTo:
enum:
- cell
- text
- row
type: string
ConditionalFormattingConfigWithSingleColor:
properties:
applyTo:
$ref: '#/components/schemas/ConditionalFormattingColorApplyTo'
description: Apply formatting to cell background or text
rules:
items:
$ref: '#/components/schemas/ConditionalFormattingWithFilterOperator'
type: array
description: Rules for single-color conditional formatting
darkColor:
type: string
description: Color for dark mode
color:
type: string
description: Color for single-color conditional formatting
target:
allOf:
- $ref: '#/components/schemas/FieldTarget'
nullable: true
description: Target field for the formatting rule
required:
- rules
- color
- target
type: object
ConditionalFormattingColorRange:
properties:
end:
type: string
description: End color for gradient
start:
type: string
description: Start color for gradient
required:
- end
- start
type: object
ConditionalFormattingMinMax_number-or-auto_:
properties:
max:
anyOf:
- type: number
format: double
- type: string
enum:
- auto
description: Maximum value (number or 'auto')
min:
anyOf:
- type: number
format: double
- type: string
enum:
- auto
description: Minimum value (number or 'auto')
required:
- max
- min
type: object
ConditionalFormattingConfigWithColorRange:
properties:
applyTo:
$ref: '#/components/schemas/ConditionalFormattingColorApplyTo'
description: Apply formatting to cell background or text
rule:
$ref: '#/components/schemas/ConditionalFormattingMinMax_number-or-auto_'
description: Rule for color range formatting (min/max values)
color:
$ref: '#/components/schemas/ConditionalFormattingColorRange'
description: Color range for gradient conditional formatting
target:
allOf:
- $ref: '#/components/schemas/FieldTarget'
nullable: true
description: Target field for the formatting rule
required:
- rule
- color
- target
type: object
ConditionalFormattingConfig:
anyOf:
- $ref: '#/components/schemas/ConditionalFormattingConfigWithSingleColor'
- $ref: '#/components/schemas/ConditionalFormattingConfigWithColorRange'
BigNumber:
properties:
comparisonField:
type: string
conditionalFormattings:
items:
$ref: '#/components/schemas/ConditionalFormattingConfig'
type: array
description: Conditional formatting rules
comparisonLabel:
type: string
description: Custom label for the comparison value
flipColors:
type: boolean
description: Flip positive/negative colors (red for increase, green for
decrease)
comparisonFormat:
$ref: '#/components/schemas/ComparisonFormatTypes'
description: Format for comparison value
showComparison:
type: boolean
description: Show comparison with previous value
showTableNamesInLabel:
type: boolean
description: Include table name in the label
showBigNumberLabel:
type: boolean
description: Show the label above the number
selectedField:
type: string
description: Field ID to display as the big number
style:
$ref: '#/components/schemas/CompactOrAlias'
description: Number formatting style (compact notation)
label:
type: string
description: Custom label for the big number
type: object
BigNumberConfig:
properties:
config:
$ref: '#/components/schemas/BigNumber'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.BIG_NUMBER'
description: Type of chart visualization
required:
- type
type: object
ChartType.CARTESIAN:
enum:
- cartesian
type: string
Partial_CompleteCartesianChartLayout_:
properties:
xField:
type: string
description: Field ID to use for the X axis
yField:
items:
type: string
type: array
description: Field IDs to use for the Y axis
flipAxes:
type: boolean
description: Swap X and Y axes (creates horizontal bar charts)
showGridX:
type: boolean
description: Show vertical grid lines
showGridY:
type: boolean
description: Show horizontal grid lines
showXAxis:
type: boolean
description: Show the X axis
showYAxis:
type: boolean
description: Show the Y axis
showLeftYAxis:
type: boolean
description: Controls left/primary Y-axis visibility
showRightYAxis:
type: boolean
description: Controls right/secondary Y-axis visibility
stack:
anyOf:
- type: string
- type: boolean
description: Stack series together (true for default stacking, or string
for stack group name)
connectNulls:
type: boolean
description: Connect null data points with a line
colorByCategory:
type: boolean
description: Color each bar by its category value instead of using a single
series color
categoryColorOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Per-category color overrides (maps category value to hex color)
type: object
description: Make all properties in T optional
CartesianChartLayout:
$ref: '#/components/schemas/Partial_CompleteCartesianChartLayout_'
LegendPlacement:
type: string
enum:
- custom
- outsideRight
- outsideLeft
description: 'High-level legend placement preset. Set to ''outsideRight'' or
''outsideLeft'' to
render the legend beside the plot with reserved grid space. Undefined behaves
like ''custom'' (no override of the existing legend position fields).'
EchartsLegend:
properties:
placement:
$ref: '#/components/schemas/LegendPlacement'
description: 'High-level placement preset. Overrides orient/top/right/bottom/left
when set to an outside value.'
icon:
type: string
enum:
- circle
- rect
- roundRect
- triangle
- diamond
- pin
- arrow
- none
description: Legend icon shape
align:
type: string
enum:
- auto
- left
- right
description: Legend alignment
height:
type: string
description: Legend height
width:
type: string
description: Legend width
left:
type: string
description: Left position
bottom:
type: string
description: Bottom position
right:
type: string
description: Right position
top:
type: string
description: Top position
orient:
type: string
enum:
- horizontal
- vertical
description: Legend orientation
type:
type: string
enum:
- plain
- scroll
description: Legend type (plain or scrollable)
show:
type: boolean
description: Show the legend
type: object
EchartsGrid:
properties:
height:
type: string
description: Grid height
width:
type: string
description: Grid width
left:
type: string
description: Left padding
bottom:
type: string
description: Bottom padding
right:
type: string
description: Right padding
top:
type: string
description: Top padding
containLabel:
type: boolean
description: Whether the grid area contains axis labels
type: object
PivotValue:
properties:
value:
description: Pivot value
field:
type: string
description: Pivot field ID
required:
- value
- field
type: object
PivotReference:
properties:
pivotValues:
items:
$ref: '#/components/schemas/PivotValue'
type: array
description: Pivot values for this reference (for pivoted data)
field:
type: string
description: Field ID being referenced
required:
- field
type: object
CartesianSeriesType:
enum:
- line
- bar
- scatter
- area
type: string
MarkLineData:
properties:
dynamicValue:
type: string
enum:
- average
nullable: false
description: Dynamic value type
label:
properties:
position:
type: string
enum:
- start
- middle
- end
description: Label position
formatter:
type: string
description: Label formatter
type: object
description: Label configuration for this data point
lineStyle:
properties:
color:
type: string
description: Line color
required:
- color
type: object
description: Line style for this data point
uuid:
type: string
description: Unique identifier for this mark line
type:
type: string
description: Point type (e.g., 'average')
value:
type: string
description: Value to display
name:
type: string
description: Name of the reference line
xAxis:
type: string
description: X axis value for vertical line
yAxis:
type: string
description: Y axis value for horizontal line
required:
- uuid
type: object
MarkLine:
properties:
label:
properties:
formatter:
type: string
description: Label formatter
type: object
description: Label configuration
lineStyle:
properties:
type:
type: string
description: Line type
width:
type: number
format: double
description: Line width
color:
type: string
description: Line color
required:
- type
- width
- color
type: object
description: Line style configuration
symbol:
type: string
description: Symbol at line endpoints
data:
items:
$ref: '#/components/schemas/MarkLineData'
type: array
description: Reference line data points
required:
- data
type: object
Series:
properties:
isFilteredOut:
type: boolean
description: Whether this series is currently filtered out
markLine:
$ref: '#/components/schemas/MarkLine'
description: Reference line configuration
smooth:
type: boolean
description: Use smooth curves for line/area charts
showSymbol:
type: boolean
description: Show symbols/markers on data points
areaStyle:
$ref: '#/components/schemas/Record_string.unknown_'
description: Area fill style (presence indicates area chart)
hidden:
type: boolean
description: Hide this series from the chart
label:
properties:
showSeriesName:
type: boolean
description: Show the metric field name
showLabel:
type: boolean
description: Show the legend/pivot name
showValue:
type: boolean
description: Show the metric value
showOverlappingLabels:
type: boolean
description: Show labels even when they overlap
position:
type: string
enum:
- left
- top
- right
- bottom
- inside
description: Position of data labels
show:
type: boolean
description: Show data labels on points
type: object
description: Data label configuration
yAxisIndex:
type: number
format: double
description: Index of Y axis to use (for dual Y axis charts)
color:
type: string
description: Color for the series (hex code)
name:
type: string
description: Display name for the series
stackLabel:
properties:
show:
type: boolean
description: Show stack total labels
type: object
description: Stack total label configuration
stack:
type: string
description: Stack group name (series with same stack name are stacked)
type:
$ref: '#/components/schemas/CartesianSeriesType'
description: Series visualization type
encode:
properties:
y:
type: string
description: Hash of yRef (computed)
x:
type: string
description: Hash of xRef (computed)
yRef:
$ref: '#/components/schemas/PivotReference'
description: Y axis field reference
xRef:
$ref: '#/components/schemas/PivotReference'
description: X axis field reference
required:
- yRef
- xRef
type: object
description: Field references for this series
required:
- type
- encode
type: object
Axis:
properties:
rotate:
type: number
format: double
description: Rotation angle for axis labels
inverse:
type: boolean
description: Reverse the axis direction
maxOffset:
type: string
description: Offset from maximum value
minOffset:
type: string
description: Offset from minimum value
max:
type: string
description: Maximum value (or 'dataMax' for auto)
min:
type: string
description: Minimum value (or 'dataMin' for auto)
name:
type: string
description: Axis title
type: object
XAxisSortType:
enum:
- default
- category
- bar_totals
type: string
XAxis:
allOf:
- $ref: '#/components/schemas/Axis'
- properties:
dataZoomItemCount:
type: number
format: double
description: Number of items visible at once in the data-zoom window
dataZoomAnchor:
type: string
enum:
- start
- end
description: Where the initial data-zoom window anchors when data zoom
is enabled
enableDataZoom:
type: boolean
description: Enable data zoom slider for this axis
sortType:
$ref: '#/components/schemas/XAxisSortType'
description: How to sort the X axis
type: object
TooltipSortBy:
type: string
enum:
- default
- alphabetical
- value_ascending
- value_descending
Partial_CompleteEChartsConfig_:
properties:
legend:
$ref: '#/components/schemas/EchartsLegend'
description: Legend configuration
grid:
$ref: '#/components/schemas/EchartsGrid'
description: Grid (chart area) configuration
series:
items:
$ref: '#/components/schemas/Series'
type: array
description: Chart series configuration
xAxis:
items:
$ref: '#/components/schemas/XAxis'
type: array
description: X axis configuration
yAxis:
items:
$ref: '#/components/schemas/Axis'
type: array
description: Y axis configuration
tooltip:
type: string
description: Tooltip formatter template
tooltipSort:
$ref: '#/components/schemas/TooltipSortBy'
description: How to sort tooltip items
showAxisTicks:
type: boolean
description: Show tick marks on axes
axisLabelFontSize:
type: number
format: double
description: Font size for axis labels
axisTitleFontSize:
type: number
format: double
description: Font size for axis titles
type: object
description: Make all properties in T optional
EChartsConfig:
$ref: '#/components/schemas/Partial_CompleteEChartsConfig_'
SeriesMetadata:
properties:
color:
type: string
description: Color for the series
required:
- color
type: object
Record_string.SeriesMetadata_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/SeriesMetadata'
type: object
description: Construct a type with a set of properties K of type T
RowLimit:
properties:
count:
type: number
format: double
description: Number of rows to show or hide
direction:
type: string
enum:
- first
- last
description: Whether to target the first or last N rows
mode:
type: string
enum:
- show
- hide
description: Whether to show or hide the selected rows
required:
- count
- direction
- mode
type: object
CartesianChart:
properties:
columnLimit:
type: number
format: double
description: Maximum number of pivot columns to display
rowLimit:
$ref: '#/components/schemas/RowLimit'
description: Limit displayed rows to first/last N
metadata:
$ref: '#/components/schemas/Record_string.SeriesMetadata_'
description: Metadata for series (colors, etc.)
conditionalFormattings:
items:
$ref: '#/components/schemas/ConditionalFormattingConfig'
type: array
description: Conditional formatting rules
eChartsConfig:
$ref: '#/components/schemas/EChartsConfig'
description: ECharts-specific configuration
layout:
$ref: '#/components/schemas/CartesianChartLayout'
description: Layout configuration for the chart axes and orientation
required:
- eChartsConfig
- layout
type: object
CartesianChartConfig:
properties:
config:
$ref: '#/components/schemas/CartesianChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.CARTESIAN'
description: Type of chart visualization
required:
- type
type: object
ChartType.CUSTOM:
enum:
- custom
type: string
CustomVis:
properties:
spec:
$ref: '#/components/schemas/Record_string.unknown_'
description: Custom visualization specification (Vega-Lite or other)
type: object
CustomVisConfig:
properties:
config:
$ref: '#/components/schemas/CustomVis'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.CUSTOM'
description: Type of chart visualization
required:
- type
type: object
ChartType.PIE:
enum:
- pie
type: string
PieChartValueLabel:
type: string
enum:
- hidden
- inside
- outside
nullable: false
Partial_PieChartValueOptions_:
properties:
valueLabel:
type: string
enum:
- hidden
- inside
- outside
showValue:
type: boolean
showPercentage:
type: boolean
type: object
description: Make all properties in T optional
Record_string.Partial_PieChartValueOptions__:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Partial_PieChartValueOptions_'
type: object
description: Construct a type with a set of properties K of type T
PieChartLegendPosition:
type: string
enum:
- horizontal
- vertical
nullable: false
PieChart:
properties:
metadata:
$ref: '#/components/schemas/Record_string.SeriesMetadata_'
description: Metadata for series (colors, etc.)
legendMaxItemLength:
type: number
format: double
description: Maximum character length for legend items
legendPosition:
$ref: '#/components/schemas/PieChartLegendPosition'
description: Legend position/orientation
showLegend:
type: boolean
description: Show the chart legend
groupSortOverrides:
items:
type: string
type: array
description: Custom sort order for groups/slices
groupValueOptionOverrides:
$ref: '#/components/schemas/Record_string.Partial_PieChartValueOptions__'
description: Per-slice value display options
groupColorOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Custom colors for each group/slice
groupLabelOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Custom labels for each group/slice
showPercentage:
type: boolean
description: Show percentage on slices
showValue:
type: boolean
description: Show the actual value on slices
valueLabel:
$ref: '#/components/schemas/PieChartValueLabel'
description: Position of value labels on slices
isDonut:
type: boolean
description: Display as donut chart with hole in center
metricId:
type: string
description: Field ID of the metric to display
groupFieldIds:
items:
type: string
type: array
description: Field IDs used for grouping/slicing the pie
type: object
PieChartConfig:
properties:
config:
$ref: '#/components/schemas/PieChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.PIE'
description: Type of chart visualization
required:
- type
type: object
ChartType.FUNNEL:
enum:
- funnel
type: string
FunnelChartDataInput:
enum:
- row
- column
type: string
FunnelChartLabelPosition:
enum:
- inside
- left
- right
- hidden
type: string
FunnelChartLegendPosition:
enum:
- horizontal
- vertical
type: string
FunnelChart:
properties:
legendPosition:
$ref: '#/components/schemas/FunnelChartLegendPosition'
description: Legend orientation
showLegend:
type: boolean
description: Show the chart legend
labels:
properties:
showPercentage:
type: boolean
description: Show percentage
showValue:
type: boolean
description: Show the actual value
position:
$ref: '#/components/schemas/FunnelChartLabelPosition'
description: Position of labels
type: object
description: Label display configuration
colorOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Custom colors for funnel stages
labelOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Custom labels for funnel stages
metadata:
$ref: '#/components/schemas/Record_string.SeriesMetadata_'
description: Metadata for series (colors, etc.)
fieldId:
type: string
description: Field ID to display in funnel
dataInput:
$ref: '#/components/schemas/FunnelChartDataInput'
description: How data is structured (row-based or column-based)
type: object
FunnelChartConfig:
properties:
config:
$ref: '#/components/schemas/FunnelChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.FUNNEL'
description: Type of chart visualization
required:
- type
type: object
ChartType.TABLE:
enum:
- table
type: string
ColumnProperties:
properties:
width:
type: number
format: double
color:
type: string
description: Color for bar display style (hex code)
displayStyle:
type: string
enum:
- text
- bar
description: How to display the cell value
frozen:
type: boolean
description: Freeze the column (stick to left side)
name:
type: string
description: Custom display name for the column
visible:
type: boolean
description: Whether the column is visible
type: object
Record_string.ColumnProperties_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/ColumnProperties'
type: object
description: Construct a type with a set of properties K of type T
TableChart:
properties:
rowLimit:
$ref: '#/components/schemas/RowLimit'
description: Limit displayed rows to first/last N
metricsAsRows:
type: boolean
description: Display metrics as rows instead of columns
conditionalFormattings:
items:
$ref: '#/components/schemas/ConditionalFormattingConfig'
type: array
description: Conditional formatting rules
columns:
$ref: '#/components/schemas/Record_string.ColumnProperties_'
description: Column-specific configuration
showRowGrouping:
type: boolean
description: 'Visually deduplicate repeated row-index dimension values across
consecutive
rows without showing aggregate subtotal rows. When `showSubtotals` is
true,
grouping is implicitly active and this flag is ignored. Defaults to false.'
showSubtotalsExpanded:
type: boolean
description: Default subtotal rows to expanded (vs. collapsed). Only meaningful
when showSubtotals is true.
showSubtotals:
type: boolean
description: Show subtotal rows
showResultsTotal:
type: boolean
description: Show total results count
hideRowNumbers:
type: boolean
description: Hide row number column
showTableNames:
type: boolean
description: Show table names in column headers
showRowCalculation:
type: boolean
description: Show row totals/calculations
showColumnCalculation:
type: boolean
description: Show column totals/calculations
type: object
TableChartConfig:
properties:
config:
$ref: '#/components/schemas/TableChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.TABLE'
description: Type of chart visualization
required:
- type
type: object
ChartType.TREEMAP:
enum:
- treemap
type: string
TreemapChart:
properties:
endColorThreshold:
type: number
format: double
description: Value threshold for end color
startColorThreshold:
type: number
format: double
description: Value threshold for start color
useDynamicColors:
type: boolean
description: Use dynamic color scaling based on values
endColor:
type: string
description: End color for color gradient (hex code)
startColor:
type: string
description: Start color for color gradient (hex code)
colorMetricId:
type: string
description: Field ID for node color value
sizeMetricId:
type: string
description: Field ID for node size
groupFieldIds:
items:
type: string
type: array
description: Field IDs for hierarchical grouping
leafDepth:
type: number
format: double
description: Depth of leaf nodes to display
visibleMin:
type: number
format: double
description: Minimum size for visible nodes
type: object
TreemapChartConfig:
properties:
config:
$ref: '#/components/schemas/TreemapChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.TREEMAP'
description: Type of chart visualization
required:
- type
type: object
ChartType.GAUGE:
enum:
- gauge
type: string
GaugeSection:
properties:
color:
type: string
description: Color for this section (hex code)
maxFieldId:
type: string
description: Field ID to use as max value
minFieldId:
type: string
description: Field ID to use as min value
max:
type: number
format: double
description: End value for this section
min:
type: number
format: double
description: Start value for this section
required:
- color
- max
- min
type: object
GaugeChart:
properties:
customPercentageLabel:
type: string
description: Custom label for the percentage display
showPercentage:
type: boolean
description: Show value as percentage
customLabel:
type: string
description: Custom label for the gauge value
sections:
items:
$ref: '#/components/schemas/GaugeSection'
type: array
description: Color sections/ranges for the gauge
showAxisLabels:
type: boolean
description: Show min/max labels on the gauge
maxFieldId:
type: string
description: Field ID to use as the max value
max:
type: number
format: double
description: Maximum value for the gauge
min:
type: number
format: double
description: Minimum value for the gauge
selectedField:
type: string
description: Field ID for the gauge value
type: object
GaugeChartConfig:
properties:
config:
$ref: '#/components/schemas/GaugeChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.GAUGE'
description: Type of chart visualization
required:
- type
type: object
ChartType.MAP:
enum:
- map
type: string
MapChartLocation:
enum:
- USA
- world
- europe
- custom
type: string
MapChartType:
enum:
- scatter
- area
- heatmap
- hexbin
type: string
MapHexbinSizingMode:
enum:
- dynamic
- fixed
type: string
MapHexbinValueBasis:
enum:
- count
- field
type: string
MapHexbinAggregation:
enum:
- sum
- avg
- min
- max
type: string
MapTileBackground:
enum:
- none
- openstreetmap
- light
- dark
- satellite
- voyager
type: string
MapFieldConfig:
properties:
label:
type: string
description: Custom label for the field
visible:
type: boolean
description: Whether to show this field in tooltips
type: object
Record_string.MapFieldConfig_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/MapFieldConfig'
type: object
description: Construct a type with a set of properties K of type T
MapChart:
properties:
saveMapExtent:
type: boolean
description: Save the current map zoom/position
fieldConfig:
$ref: '#/components/schemas/Record_string.MapFieldConfig_'
description: Field-specific configuration for tooltips
noDataColor:
type: string
description: Color for regions with no data (hex code)
backgroundColor:
type: string
description: Background color for the map (hex code)
darkModeTileBackground:
$ref: '#/components/schemas/MapTileBackground'
description: Map tile background style for dark mode (uses dark default
when undefined)
tileBackground:
$ref: '#/components/schemas/MapTileBackground'
description: Map tile background style
dataLayerOpacity:
type: number
format: double
description: Data layer opacity (0.1 to 1)
hexbinConfig:
properties:
emptyBinColor:
type: string
nullable: true
description: 'Fill color for empty bins. Hex6 (#rrggbb) = solid fill,
hex8
(#rrggbbaa) = fill with alpha, null/undefined = outline only.'
showEmptyBins:
type: boolean
description: 'Render outlined empty cells across the visible map area,
so the user
can see "where there is no data" relative to the hex grid.'
aggregation:
$ref: '#/components/schemas/MapHexbinAggregation'
description: Aggregation applied when valueBasis = FIELD. Defaults to
SUM.
valueBasis:
$ref: '#/components/schemas/MapHexbinValueBasis'
description: 'What drives cell color: count of points (default) or an
aggregation
over a chosen value field (controlled via the chart''s `valueFieldId`).'
fixedResolution:
type: number
format: double
description: H3 resolution (0-15) used when sizingMode is FIXED. Ignored
otherwise.
sizingMode:
$ref: '#/components/schemas/MapHexbinSizingMode'
description: How bin size is determined. Defaults to DYNAMIC if unset.
opacity:
type: number
format: double
description: Opacity of hex polygons (0.1 to 1)
type: object
description: Configuration for H3 hexagonal binning visualization
heatmapConfig:
properties:
opacity:
type: number
format: double
description: Opacity of the heatmap layer
blur:
type: number
format: double
description: Blur amount for heat points
radius:
type: number
format: double
description: Radius of heat points
type: object
description: Configuration for heatmap visualization
sizeFieldId:
type: string
description: Field ID for bubble size (scatter maps)
maxBubbleSize:
type: number
format: double
description: Maximum bubble size for scatter maps
minBubbleSize:
type: number
format: double
description: Minimum bubble size for scatter maps
defaultCenterLon:
type: number
format: double
description: Default center longitude
defaultCenterLat:
type: number
format: double
description: Default center latitude
defaultZoom:
type: number
format: double
description: Default zoom level
colorOverrides:
$ref: '#/components/schemas/Record_string.string_'
description: Per-value color overrides for categorical color fields
colorRange:
items:
type: string
type: array
description: Array of colors for the value gradient
showLegend:
type: boolean
description: Show the map legend
valueFieldId:
type: string
description: Field ID for the value to display
geoJsonPropertyKey:
type: string
description: Property key in GeoJSON to match against data
locationFieldId:
type: string
description: Field ID for location/region names (area maps)
longitudeFieldId:
type: string
description: Field ID for longitude values
latitudeFieldId:
type: string
description: Field ID for latitude values
locationType:
$ref: '#/components/schemas/MapChartType'
description: How to display location data
customGeoJsonUrl:
type: string
description: URL to custom GeoJSON file
mapType:
$ref: '#/components/schemas/MapChartLocation'
description: Type of map to display
type: object
MapChartConfig:
properties:
config:
$ref: '#/components/schemas/MapChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.MAP'
description: Type of chart visualization
required:
- type
type: object
ChartType.SANKEY:
enum:
- sankey
type: string
SankeyNodeLayout:
type: string
enum:
- multi-step
- merged
- direct
description: 'How nodes are laid out:
- `multi-step`: depth-unrolled journeys (default)
- `merged`: one node per label, journeys preserved (acyclic flows only)
- `direct`: two-column source→target pairs, no chaining'
SankeyChart:
properties:
nodeLayout:
$ref: '#/components/schemas/SankeyNodeLayout'
description: How nodes are laid out across steps
orient:
type: string
enum:
- horizontal
- vertical
description: Orientation of the diagram
nodeAlign:
type: string
enum:
- left
- right
- justify
description: Node alignment
metricFieldId:
type: string
description: Field ID for the link value metric
targetFieldId:
type: string
description: Field ID for the target node dimension
sourceFieldId:
type: string
description: Field ID for the source node dimension
type: object
SankeyChartConfig:
properties:
config:
$ref: '#/components/schemas/SankeyChart'
description: Chart-type-specific configuration
type:
$ref: '#/components/schemas/ChartType.SANKEY'
description: Type of chart visualization
required:
- type
type: object
ChartConfig:
anyOf:
- $ref: '#/components/schemas/BigNumberConfig'
- $ref: '#/components/schemas/CartesianChartConfig'
- $ref: '#/components/schemas/CustomVisConfig'
- $ref: '#/components/schemas/PieChartConfig'
- $ref: '#/components/schemas/FunnelChartConfig'
- $ref: '#/components/schemas/TableChartConfig'
- $ref: '#/components/schemas/TreemapChartConfig'
- $ref: '#/components/schemas/GaugeChartConfig'
- $ref: '#/components/schemas/MapChartConfig'
- $ref: '#/components/schemas/SankeyChartConfig'
Record_string.ParameterValue_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/ParameterValue'
type: object
description: Construct a type with a set of properties K of type T
ParametersValuesMap:
$ref: '#/components/schemas/Record_string.ParameterValue_'
ColorPaletteSource:
anyOf:
- properties:
type:
type: string
enum:
- config
nullable: false
required:
- type
type: object
- properties:
type:
type: string
enum:
- default
nullable: false
required:
- type
type: object
- properties:
name:
type: string
uuid:
type: string
type:
type: string
enum:
- organization
nullable: false
required:
- name
- uuid
- type
type: object
- properties:
name:
type: string
uuid:
type: string
type:
type: string
enum:
- project
nullable: false
required:
- name
- uuid
- type
type: object
- properties:
name:
type: string
uuid:
type: string
type:
type: string
enum:
- space
nullable: false
required:
- name
- uuid
- type
type: object
- properties:
name:
type: string
uuid:
type: string
type:
type: string
enum:
- dashboard
nullable: false
required:
- name
- uuid
- type
type: object
- properties:
name:
type: string
uuid:
type: string
type:
type: string
enum:
- chart
nullable: false
required:
- name
- uuid
- type
type: object
description: 'Where a resolved colour palette came from. The `config` and `default`
cases
carry no entity reference; the rest expose the UUID and human-readable name
of the entity (organization, project, space, dashboard or chart) that owns
the winning palette in the resolution chain.'
ResolvedProjectColorPalette:
properties:
source:
$ref: '#/components/schemas/ColorPaletteSource'
paletteName:
type: string
nullable: true
paletteUuid:
type: string
nullable: true
darkColors:
items:
type: string
type: array
nullable: true
colors:
items:
type: string
type: array
required:
- source
- paletteName
- paletteUuid
- darkColors
- colors
type: object
SavedChart:
properties:
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
slug:
type: string
description: Unique identifier slug for this chart
access:
items:
$ref: '#/components/schemas/SpaceAccess'
type: array
inheritsFromOrgOrProject:
type: boolean
resolvedColorPalette:
$ref: '#/components/schemas/ResolvedProjectColorPalette'
description: 'Fully resolved palette for this chart, computed from the
org → project → space → dashboard → chart hierarchy. Read-only — set
the chart''s own palette via `colorPaletteUuid`.'
colorPaletteUuid:
type: string
nullable: true
description: 'Chart-level palette override pointer. `null` means inherit
from the
containing dashboard / space / project / org. Writable via
`UpdateSavedChart`.'
colorPalette:
items:
type: string
type: array
deprecated: true
dashboardName:
type: string
nullable: true
dashboardUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
pinnedListUuid:
type: string
nullable: true
spaceName:
type: string
spaceUuid:
type: string
organizationUuid:
type: string
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
updatedAt:
type: string
format: date-time
description: Timestamp when the chart was last updated
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
description: Parameter values for the chart query
tableConfig:
properties:
columnOrder:
items:
type: string
type: array
description: Order of columns in table view
required:
- columnOrder
type: object
description: Table view configuration
chartConfig:
$ref: '#/components/schemas/ChartConfig'
description: Visualization configuration for the chart
pivotConfig:
properties:
columns:
items:
type: string
type: array
description: Fields to use as pivot columns
required:
- columns
type: object
description: Pivot table configuration
metricQuery:
$ref: '#/components/schemas/MetricQuery'
description: The query configuration defining what data to fetch
tableName:
type: string
description: The explore/table name this chart queries from
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
projectUuid:
type: string
uuid:
type: string
required:
- verification
- slug
- access
- inheritsFromOrgOrProject
- resolvedColorPalette
- colorPaletteUuid
- colorPalette
- dashboardName
- dashboardUuid
- pinnedListOrder
- pinnedListUuid
- spaceName
- spaceUuid
- organizationUuid
- updatedAt
- tableConfig
- chartConfig
- metricQuery
- tableName
- name
- projectUuid
- uuid
type: object
DbtModelJoinType:
type: string
enum:
- inner
- full
- left
- right
JoinRelationship:
enum:
- one-to-many
- many-to-one
- one-to-one
- many-to-many
type: string
Pick_ExploreJoin.table-or-sqlOn-or-type-or-hidden-or-always-or-relationship_:
properties:
type:
$ref: '#/components/schemas/DbtModelJoinType'
table:
type: string
hidden:
type: boolean
sqlOn:
type: string
always:
type: boolean
relationship:
$ref: '#/components/schemas/JoinRelationship'
required:
- table
- sqlOn
type: object
description: From T, pick a set of properties whose keys are in the union K
CompiledExploreJoin:
allOf:
- $ref: '#/components/schemas/Pick_ExploreJoin.table-or-sqlOn-or-type-or-hidden-or-always-or-relationship_'
- properties:
parameterReferences:
items:
type: string
type: array
tablesReferences:
items:
type: string
type: array
compiledSqlOn:
type: string
required:
- compiledSqlOn
type: object
OrderFieldsByStrategy:
enum:
- LABEL
- INDEX
type: string
JoinModelRequiredFilterTarget:
properties:
tableName:
type: string
fieldRef:
type: string
required:
- tableName
- fieldRef
type: object
JoinModelRequiredFilterRule:
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:
$ref: '#/components/schemas/JoinModelRequiredFilterTarget'
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
ModelRequiredFilterRule:
anyOf:
- $ref: '#/components/schemas/MetricFilterRule'
- $ref: '#/components/schemas/JoinModelRequiredFilterRule'
GroupType:
properties:
description:
type: string
label:
type: string
required:
- label
type: object
Record_string.GroupType_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/GroupType'
type: object
description: Construct a type with a set of properties K of type T
InlineErrorType:
enum:
- METADATA_PARSE_ERROR
- NO_DIMENSIONS_FOUND
- SKIPPED_JOIN
- MISSING_TABLE
- FIELD_ERROR
- SET_VALIDATION_ERROR
- INVALID_PARAMETER
- DUPLICATE_FIELD_NAME
type: string
InlineError:
properties:
message:
type: string
type:
$ref: '#/components/schemas/InlineErrorType'
required:
- message
- type
type: object
TableBase:
properties:
sqlPath:
type: string
ymlPath:
type: string
dbtPackageName:
type: string
warnings:
items:
$ref: '#/components/schemas/InlineError'
type: array
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
defaultShowUnderlyingValues:
items:
type: string
type: array
defaultTimeDimension:
$ref: '#/components/schemas/DefaultTimeDimension'
groupDetails:
$ref: '#/components/schemas/Record_string.GroupType_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
hidden:
type: boolean
requiredFilters:
items:
$ref: '#/components/schemas/ModelRequiredFilterRule'
type: array
sqlWhere:
type: string
groupLabel:
type: string
orderFieldsBy:
$ref: '#/components/schemas/OrderFieldsByStrategy'
primaryKey:
items:
type: string
type: array
sqlTable:
type: string
schema:
type: string
database:
type: string
description:
type: string
originalName:
type: string
label:
type: string
name:
type: string
required:
- sqlTable
- schema
- database
- label
- name
type: object
Dimension:
properties:
fieldType:
$ref: '#/components/schemas/FieldType.DIMENSION'
type:
$ref: '#/components/schemas/DimensionType'
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
group:
type: string
deprecated: true
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
timeInterval:
$ref: '#/components/schemas/TimeFrames'
timeIntervalBaseDimensionName:
type: string
timeIntervalBaseDimensionType:
$ref: '#/components/schemas/DimensionType'
customTimeInterval:
type: string
isAdditionalDimension:
type: boolean
skipTimezoneConversion:
type: boolean
colors:
$ref: '#/components/schemas/Record_string.string_'
isIntervalBase:
type: boolean
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
formatOptions:
$ref: '#/components/schemas/CustomFormat'
caseSensitive:
type: boolean
image:
properties:
fit:
type: string
height:
type: number
format: double
width:
type: number
format: double
url:
type: string
required:
- url
type: object
richText:
type: string
spotlight:
properties:
segmentBy:
type: boolean
filterBy:
type: boolean
type: object
required:
- fieldType
- type
- name
- label
- table
- tableLabel
- sql
- hidden
type: object
additionalProperties: true
Record_string.Record_string.string-or-string-Array__:
properties: {}
additionalProperties:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
type: object
description: Construct a type with a set of properties K of type T
FieldCompilationError:
properties:
message:
type: string
required:
- message
type: object
description: 'Error information stored on a field when compilation fails but
partial compilation mode is enabled.'
CompiledProperties:
properties:
compiledDistinctKeys:
items:
type: string
type: array
compiledValueSql:
type: string
compilationError:
$ref: '#/components/schemas/FieldCompilationError'
description: 'When partial compilation mode is enabled, fields that fail
to compile
will have this property set instead of causing the entire explore to fail.'
tablesAnyAttributes:
$ref: '#/components/schemas/Record_string.Record_string.string-or-string-Array__'
tablesRequiredAttributes:
$ref: '#/components/schemas/Record_string.Record_string.string-or-string-Array__'
tablesReferences:
items:
type: string
type: array
compiledSql:
type: string
required:
- compiledSql
type: object
CompiledDimension:
allOf:
- $ref: '#/components/schemas/Dimension'
- $ref: '#/components/schemas/CompiledProperties'
Record_string.CompiledDimension_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledDimension'
type: object
description: Construct a type with a set of properties K of type T
CompiledMetric:
allOf:
- $ref: '#/components/schemas/Metric'
- $ref: '#/components/schemas/CompiledProperties'
Record_string.CompiledMetric_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledMetric'
type: object
description: Construct a type with a set of properties K of type T
LineageNodeDependency:
properties:
name:
type: string
type:
type: string
enum:
- model
- seed
- source
required:
- name
- type
type: object
Record_string.LineageNodeDependency-Array_:
properties: {}
additionalProperties:
items:
$ref: '#/components/schemas/LineageNodeDependency'
type: array
type: object
description: Construct a type with a set of properties K of type T
LineageGraph:
$ref: '#/components/schemas/Record_string.LineageNodeDependency-Array_'
LightdashProjectParameter:
properties:
options_from_dimension:
properties:
dimension:
type: string
model:
type: string
required:
- dimension
- model
type: object
options:
anyOf:
- items:
type: string
type: array
- items:
type: number
format: double
type: array
allow_custom_values:
type: boolean
multiple:
type: boolean
default:
$ref: '#/components/schemas/ParameterValue'
type:
type: string
enum:
- string
- number
- date
description:
type: string
label:
type: string
required:
- label
type: object
Record_string.LightdashProjectParameter_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/LightdashProjectParameter'
type: object
description: Construct a type with a set of properties K of type T
FieldSetDefinition:
properties:
fields:
items:
type: string
type: array
required:
- fields
type: object
Record_string.FieldSetDefinition_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/FieldSetDefinition'
type: object
description: Construct a type with a set of properties K of type T
CompiledTable:
allOf:
- $ref: '#/components/schemas/TableBase'
- properties:
sets:
$ref: '#/components/schemas/Record_string.FieldSetDefinition_'
parameters:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
parameterReferences:
items:
type: string
type: array
uncompiledSqlWhere:
type: string
source:
$ref: '#/components/schemas/Source'
lineageGraph:
$ref: '#/components/schemas/LineageGraph'
metrics:
$ref: '#/components/schemas/Record_string.CompiledMetric_'
dimensions:
$ref: '#/components/schemas/Record_string.CompiledDimension_'
required:
- lineageGraph
- metrics
- dimensions
type: object
SupportedDbtAdapter:
enum:
- bigquery
- databricks
- snowflake
- redshift
- postgres
- duckdb
- trino
- clickhouse
- athena
- spark
type: string
ExploreType:
enum:
- virtual
- default
- pre_aggregate
type: string
Record_string.string-Array_:
properties: {}
additionalProperties:
items:
type: string
type: array
type: object
description: Construct a type with a set of properties K of type T
UserAttributeValueMap:
$ref: '#/components/schemas/Record_string.string-Array_'
PreAggregateMaterializationRole:
properties:
attributes:
$ref: '#/components/schemas/UserAttributeValueMap'
email:
type: string
required:
- attributes
- email
type: object
PreAggregateDef:
properties:
materializationRole:
$ref: '#/components/schemas/PreAggregateMaterializationRole'
refresh:
properties:
cron:
type: string
type: object
maxRows:
type: number
format: double
granularity:
$ref: '#/components/schemas/TimeFrames'
timeDimension:
type: string
filters:
items:
$ref: '#/components/schemas/MetricFilterRule'
type: array
metrics:
items:
type: string
type: array
dimensions:
items:
type: string
type: array
name:
type: string
required:
- metrics
- dimensions
- name
type: object
PreAggregateSource:
properties:
preAggregateName:
type: string
sourceExploreName:
type: string
required:
- preAggregateName
- sourceExploreName
type: object
Explore:
properties:
warnings:
items:
$ref: '#/components/schemas/InlineError'
type: array
description: 'Non-fatal warnings from partial compilation.
Present when some joins or fields failed to compile but the explore is
still usable.
Only populated when PARTIAL_COMPILATION_ENABLED=true.'
preAggregateSource:
$ref: '#/components/schemas/PreAggregateSource'
preAggregates:
items:
$ref: '#/components/schemas/PreAggregateDef'
type: array
savedParameterValues:
$ref: '#/components/schemas/ParametersValuesMap'
parameters:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
spotlight:
properties:
owner:
type: string
categories:
items:
type: string
type: array
visibility:
type: string
enum:
- show
- hide
required:
- visibility
type: object
caseSensitive:
type: boolean
type:
$ref: '#/components/schemas/ExploreType'
sqlPath:
type: string
ymlPath:
type: string
databricksCompute:
type: string
warehouse:
type: string
targetDatabase:
$ref: '#/components/schemas/SupportedDbtAdapter'
unfilteredTables:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledTable'
type: object
tables:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledTable'
type: object
joinedTables:
items:
$ref: '#/components/schemas/CompiledExploreJoin'
type: array
baseTable:
type: string
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
groupLabel:
type: string
deprecated: true
tags:
items:
type: string
type: array
label:
type: string
name:
type: string
required:
- targetDatabase
- tables
- joinedTables
- baseTable
- tags
- label
- name
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
FiltersResponse:
properties:
tableCalculations:
$ref: '#/components/schemas/FilterGroupResponse'
metrics:
$ref: '#/components/schemas/FilterGroupResponse'
dimensions:
$ref: '#/components/schemas/FilterGroupResponse'
type: object
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.NO_PRE_AGGREGATES_DEFINED:
enum:
- no_pre_aggregates_defined
type: string
PreAggregateMissReason.DIMENSION_NOT_IN_PRE_AGGREGATE:
enum:
- dimension_not_in_pre_aggregate
type: string
PreAggregateMissReason.METRIC_NOT_IN_PRE_AGGREGATE:
enum:
- metric_not_in_pre_aggregate
type: string
PreAggregateMissReason.NON_ADDITIVE_METRIC:
enum:
- non_additive_metric
type: string
PreAggregateMissReason.CUSTOM_SQL_METRIC:
enum:
- custom_sql_metric
type: string
PreAggregateMissReason.FILTER_DIMENSION_NOT_IN_PRE_AGGREGATE:
enum:
- filter_dimension_not_in_pre_aggregate
type: string
PreAggregateMissReason.PRE_AGGREGATE_FILTER_NOT_SATISFIED:
enum:
- pre_aggregate_filter_not_satisfied
type: string
PreAggregateMissReason.GRANULARITY_TOO_FINE:
enum:
- granularity_too_fine
type: string
PreAggregateMissReason.CUSTOM_DIMENSION_PRESENT:
enum:
- custom_dimension_present
type: string
PreAggregateMissReason.CUSTOM_METRIC_PRESENT:
enum:
- custom_metric_present
type: string
PreAggregateMissReason.TABLE_CALCULATION_PRESENT:
enum:
- table_calculation_present
type: string
PreAggregateMissReason.USER_BYPASS:
enum:
- user_bypass
type: string
PreAggregateMissReason.EXPLORE_RESOLUTION_ERROR:
enum:
- explore_resolution_error
type: string
PreAggregateMissReason.NO_ACTIVE_MATERIALIZATION:
enum:
- no_active_materialization
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
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
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
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
ApiEmbedChartAndResultsResponse:
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'
appliedDashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
explore:
$ref: '#/components/schemas/Explore'
chart:
$ref: '#/components/schemas/SavedChart'
required:
- fields
- rows
- cacheMetadata
- metricQuery
- explore
- chart
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiExecuteAsyncQueryResultsCommon:
properties:
resolvedTimezone:
type: string
nullable: true
usedParametersValues:
$ref: '#/components/schemas/ParametersValuesMap'
parameterReferences:
items:
type: string
type: array
cacheMetadata:
$ref: '#/components/schemas/CacheMetadata'
queryUuid:
type: string
required:
- resolvedTimezone
- usedParametersValues
- parameterReferences
- cacheMetadata
- queryUuid
type: object
Record_string.Field-or-TableCalculation-or-CustomDimension-or-Metric_:
properties: {}
additionalProperties:
anyOf:
- $ref: '#/components/schemas/Field'
- $ref: '#/components/schemas/Metric'
- $ref: '#/components/schemas/TableCalculation'
- $ref: '#/components/schemas/CustomDimension'
type: object
description: Construct a type with a set of properties K of type T
ItemsMap:
$ref: '#/components/schemas/Record_string.Field-or-TableCalculation-or-CustomDimension-or-Metric_'
ApiExecuteAsyncDashboardChartQueryResults:
allOf:
- $ref: '#/components/schemas/ApiExecuteAsyncQueryResultsCommon'
- properties:
dateZoomApplied:
type: boolean
appliedDashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
fields:
$ref: '#/components/schemas/ItemsMap'
metricQuery:
$ref: '#/components/schemas/MetricQuery'
required:
- dateZoomApplied
- appliedDashboardFilters
- fields
- metricQuery
type: object
DateZoom:
properties:
xAxisFieldId:
type: string
granularity:
anyOf:
- $ref: '#/components/schemas/DateGranularity'
- type: string
type: object
? Pick_ExecuteAsyncDashboardChartRequestParams.dashboardFilters-or-dashboardSorts-or-pivotResults-or-invalidateCache-or-dateZoom-or-parameters-or-limit_
: properties:
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
dashboardSorts:
items:
$ref: '#/components/schemas/SortField'
type: array
pivotResults:
type: boolean
invalidateCache:
type: boolean
dateZoom:
$ref: '#/components/schemas/DateZoom'
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
limit:
type: number
format: double
nullable: true
required:
- dashboardFilters
- dashboardSorts
type: object
description: From T, pick a set of properties whose keys are in the union K
VizBaseConfig:
properties:
type:
$ref: '#/components/schemas/ChartKind'
metadata:
properties:
version:
type: number
format: double
required:
- version
type: object
required:
- type
- metadata
type: object
ChartKind.VERTICAL_BAR:
enum:
- vertical_bar
type: string
ChartKind.LINE:
enum:
- line
type: string
VizIndexType:
enum:
- time
- category
type: string
VizAggregationOptions:
enum:
- sum
- count
- avg
- min
- max
- any
type: string
SortByDirection:
enum:
- ASC
- DESC
type: string
VizSortBy:
properties:
pivotValues:
items:
$ref: '#/components/schemas/PivotSortAnchor'
type: array
description: Pins the row-sort anchor to a specific pivot column.
nullsFirst:
type: boolean
direction:
$ref: '#/components/schemas/SortByDirection'
reference:
type: string
required:
- direction
- reference
type: object
StackType:
enum:
- none
- stack
- stack100
type: string
PivotChartLayout:
properties:
stack:
anyOf:
- type: boolean
- $ref: '#/components/schemas/StackType'
sortBy:
items:
$ref: '#/components/schemas/VizSortBy'
type: array
groupBy:
items:
properties:
reference:
type: string
required:
- reference
type: object
type: array
y:
items:
properties:
aggregation:
$ref: '#/components/schemas/VizAggregationOptions'
reference:
type: string
required:
- aggregation
- reference
type: object
type: array
x:
properties:
type:
$ref: '#/components/schemas/VizIndexType'
reference:
type: string
required:
- type
- reference
type: object
required:
- y
type: object
CartesianSeriesType.LINE:
enum:
- line
type: string
CartesianSeriesType.BAR:
enum:
- bar
type: string
ValueLabelPositionOptions:
enum:
- hidden
- top
- bottom
- left
- right
- inside
type: string
AxisSide:
enum:
- 0
- 1
type: number
CartesianChartDisplay:
properties:
stack:
anyOf:
- type: boolean
- $ref: '#/components/schemas/StackType'
legend:
properties:
align:
type: string
enum:
- start
- center
- end
position:
type: string
enum:
- top
- bottom
- left
- right
required:
- align
- position
type: object
series:
properties: {}
additionalProperties:
properties:
whichYAxis:
$ref: '#/components/schemas/AxisSide'
valueLabelPosition:
$ref: '#/components/schemas/ValueLabelPositionOptions'
type:
anyOf:
- $ref: '#/components/schemas/CartesianSeriesType.LINE'
- $ref: '#/components/schemas/CartesianSeriesType.BAR'
color:
type: string
yAxisIndex:
type: number
format: double
format:
$ref: '#/components/schemas/Format'
label:
type: string
type: object
type: object
yAxis:
items:
properties:
format:
$ref: '#/components/schemas/Format'
position:
type: string
label:
type: string
type: object
type: array
xAxis:
properties:
dateFormat:
type: string
type:
$ref: '#/components/schemas/VizIndexType'
label:
type: string
type: object
type: object
VizCartesianChartConfig:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- properties:
display:
$ref: '#/components/schemas/CartesianChartDisplay'
fieldConfig:
$ref: '#/components/schemas/PivotChartLayout'
type:
anyOf:
- $ref: '#/components/schemas/ChartKind.VERTICAL_BAR'
- $ref: '#/components/schemas/ChartKind.LINE'
required:
- type
type: object
ChartKind.PIE:
enum:
- pie
type: string
VizPieChartDisplay:
properties:
isDonut:
type: boolean
type: object
VizPieChartConfig:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- properties:
display:
$ref: '#/components/schemas/VizPieChartDisplay'
fieldConfig:
$ref: '#/components/schemas/PivotChartLayout'
type:
$ref: '#/components/schemas/ChartKind.PIE'
required:
- type
type: object
ChartKind.TABLE:
enum:
- table
type: string
VizColumnConfig:
properties:
barConfig:
properties:
color:
type: string
max:
type: number
format: double
min:
type: number
format: double
type: object
displayStyle:
type: string
enum:
- text
- bar
aggregation:
$ref: '#/components/schemas/VizAggregationOptions'
order:
type: number
format: double
frozen:
type: boolean
label:
type: string
reference:
type: string
visible:
type: boolean
required:
- frozen
- label
- reference
- visible
type: object
VizColumnsConfig:
properties: {}
additionalProperties:
$ref: '#/components/schemas/VizColumnConfig'
type: object
VizTableDisplay:
properties: {}
type: object
VizTableConfig:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- properties:
display:
$ref: '#/components/schemas/VizTableDisplay'
columns:
$ref: '#/components/schemas/VizColumnsConfig'
type:
$ref: '#/components/schemas/ChartKind.TABLE'
required:
- columns
- type
type: object
Pick_SpaceSummary.uuid-or-name-or-userAccess_:
properties:
name:
type: string
uuid:
type: string
userAccess:
$ref: '#/components/schemas/SpaceAccess'
required:
- name
- uuid
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Dashboard.uuid-or-name_:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Project.projectUuid_:
properties:
projectUuid:
type: string
required:
- projectUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Organization.organizationUuid_:
properties:
organizationUuid:
type: string
description: The unique identifier of the organization
format: uuid
required:
- organizationUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
SqlChart:
properties:
resolvedColorPalette:
$ref: '#/components/schemas/ResolvedProjectColorPalette'
description: 'Fully resolved palette for this SQL chart, computed from the
org → project → space → dashboard hierarchy. SQL charts have no
per-chart override — set the palette via the containing space,
dashboard, project, or organization.'
lastViewedAt:
type: string
format: date-time
firstViewedAt:
type: string
format: date-time
views:
type: number
format: double
organization:
$ref: '#/components/schemas/Pick_Organization.organizationUuid_'
project:
$ref: '#/components/schemas/Pick_Project.projectUuid_'
dashboard:
allOf:
- $ref: '#/components/schemas/Pick_Dashboard.uuid-or-name_'
nullable: true
space:
$ref: '#/components/schemas/Pick_SpaceSummary.uuid-or-name-or-userAccess_'
lastUpdatedBy:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
lastUpdatedAt:
type: string
format: date-time
createdBy:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
createdAt:
type: string
format: date-time
chartKind:
$ref: '#/components/schemas/ChartKind'
config:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- anyOf:
- $ref: '#/components/schemas/VizCartesianChartConfig'
- $ref: '#/components/schemas/VizPieChartConfig'
- $ref: '#/components/schemas/VizTableConfig'
limit:
type: number
format: double
sql:
type: string
slug:
type: string
description:
type: string
nullable: true
name:
type: string
savedSqlUuid:
type: string
required:
- resolvedColorPalette
- lastViewedAt
- firstViewedAt
- views
- organization
- project
- dashboard
- space
- lastUpdatedBy
- lastUpdatedAt
- createdBy
- createdAt
- chartKind
- config
- limit
- sql
- slug
- description
- name
- savedSqlUuid
type: object
ApiSqlChart:
properties:
results:
$ref: '#/components/schemas/SqlChart'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiExecuteAsyncDashboardSqlChartQueryResults:
allOf:
- $ref: '#/components/schemas/ApiExecuteAsyncQueryResultsCommon'
- properties:
appliedDashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
required:
- appliedDashboardFilters
type: object
? Pick_ExecuteAsyncDashboardSqlChartRequestParams.dashboardFilters-or-dashboardSorts-or-invalidateCache-or-parameters-or-limit_
: properties:
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
dashboardSorts:
items:
$ref: '#/components/schemas/SortField'
type: array
invalidateCache:
type: boolean
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
limit:
type: number
format: double
required:
- dashboardFilters
- dashboardSorts
type: object
description: From T, pick a set of properties whose keys are in the union K
Record_string.number_:
properties: {}
additionalProperties:
type: number
format: double
type: object
description: Construct a type with a set of properties K of type T
ApiCalculateTotalResponse:
properties:
results:
$ref: '#/components/schemas/Record_string.number_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCalculateSubtotalsResponse:
properties:
results:
properties: {}
additionalProperties:
items:
properties: {}
additionalProperties:
type: number
format: double
type: object
type: array
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
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
CalculateTotalFromQuery:
properties:
invalidateCache:
type: boolean
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
explore:
type: string
metricQuery:
$ref: '#/components/schemas/MetricQueryRequest'
required:
- explore
- metricQuery
type: object
CalculateSubtotalsFromQuery:
allOf:
- $ref: '#/components/schemas/CalculateTotalFromQuery'
- properties:
dateZoom:
$ref: '#/components/schemas/DateZoom'
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
pivotDimensions:
items:
type: string
type: array
columnOrder:
items:
type: string
type: array
required:
- columnOrder
type: object
FieldValueSearchResult:
properties:
refreshedAt:
type: string
format: date-time
cached:
type: boolean
results:
items: {}
type: array
search:
type: string
required:
- refreshedAt
- cached
- results
- search
type: object
ApiSuccess__appUuid-string--version-number__:
properties:
results:
properties:
version:
type: number
format: double
appUuid:
type: string
required:
- version
- appUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGenerateAppResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--version-number__'
DataAppTemplate:
type: string
enum:
- custom
- dashboard
- slideshow
- pdf
AppChartReference:
properties:
includeSampleData:
type: boolean
uuid:
type: string
required:
- includeSampleData
- uuid
type: object
description: 'A saved-chart reference attached to a generation request.
`includeSampleData` is opt-in per chart: when true the backend runs the
underlying metric query and inlines a small sample of rows into the
sandbox so Claude can see actual values (e.g. "season 2026 only").'
AppDashboardReference:
properties:
includeSampleData:
type: boolean
uuid:
type: string
required:
- includeSampleData
- uuid
type: object
description: 'A dashboard reference attached to a generation request. The dashboard
is
expanded server-side into its chart tiles. When `includeSampleData` is
true, every resolved chart in the dashboard receives a sample.'
AppClarification:
properties:
answer:
type: string
question:
type: string
required:
- answer
- question
type: object
description: 'A clarifying question the backend posed to the user before the
build, paired
with the user''s answer. Persisted on the version''s `resources.clarifications`
so the chat can render them as a structured Q&A card on the user message.'
DataAppClaudeModel:
type: string
enum:
- opus
- sonnet
- haiku
GenerateAppRequestBody:
properties:
designUuid:
type: string
nullable: true
claudeModel:
$ref: '#/components/schemas/DataAppClaudeModel'
spaceUuid:
type: string
clarifications:
items:
$ref: '#/components/schemas/AppClarification'
type: array
dashboard:
$ref: '#/components/schemas/AppDashboardReference'
charts:
items:
$ref: '#/components/schemas/AppChartReference'
type: array
appUuid:
type: string
imageIds:
items:
type: string
type: array
template:
$ref: '#/components/schemas/DataAppTemplate'
prompt:
type: string
required:
- prompt
type: object
ApiSuccess__questions-string-Array__:
properties:
results:
properties:
questions:
items:
type: string
type: array
required:
- questions
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiClarifyAppResponse:
$ref: '#/components/schemas/ApiSuccess__questions-string-Array__'
ApiClarifyAppRequest:
properties:
imageIds:
items:
type: string
type: array
dashboard:
$ref: '#/components/schemas/AppDashboardReference'
charts:
items:
$ref: '#/components/schemas/AppChartReference'
type: array
template:
$ref: '#/components/schemas/DataAppTemplate'
prompt:
type: string
required:
- prompt
type: object
ApiSuccess__imageId-string__:
properties:
results:
properties:
imageId:
type: string
required:
- imageId
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAppImageUploadResponse:
$ref: '#/components/schemas/ApiSuccess__imageId-string__'
Exclude_DataAppTemplate.custom_:
type: string
enum:
- dashboard
- slideshow
- pdf
description: Exclude from T those types that are assignable to U
AppVersionStatus:
type: string
enum:
- pending
- sandbox
- catalog
- generating
- building
- packaging
- ready
- error
AppVersionImageResource:
properties:
imageId:
type: string
required:
- imageId
type: object
AppVersionChartResource:
properties:
chartKind:
type: string
nullable: true
chartName:
type: string
chartUuid:
type: string
required:
- chartKind
- chartName
- chartUuid
type: object
AppVersionDesignSnapshot:
properties:
fileCount:
type: number
format: double
name:
type: string
designUuid:
type: string
required:
- fileCount
- name
- designUuid
type: object
AppVersionResources:
properties:
design:
allOf:
- $ref: '#/components/schemas/AppVersionDesignSnapshot'
nullable: true
claudeModel:
$ref: '#/components/schemas/DataAppClaudeModel'
clarifications:
items:
$ref: '#/components/schemas/AppClarification'
type: array
dashboardName:
type: string
nullable: true
charts:
items:
$ref: '#/components/schemas/AppVersionChartResource'
type: array
images:
items:
$ref: '#/components/schemas/AppVersionImageResource'
type: array
required:
- clarifications
- dashboardName
- charts
- images
type: object
ApiAppVersionSummary:
properties:
resources:
allOf:
- $ref: '#/components/schemas/AppVersionResources'
nullable: true
createdByUser:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
statusUpdatedAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
statusMessage:
type: string
nullable: true
status:
$ref: '#/components/schemas/AppVersionStatus'
prompt:
type: string
version:
type: number
format: double
required:
- resources
- createdByUser
- statusUpdatedAt
- createdAt
- statusMessage
- status
- prompt
- version
type: object
? ApiSuccess__appUuid-string--name-string--description-string--createdByUserUuid-string--spaceUuid-string-or-null--template-Exclude_DataAppTemplate.custom_-or-null--pinnedListUuid-string-or-null--pinnedListOrder-number-or-null--versions-ApiAppVersionSummary-Array--hasMore-boolean__
: properties:
results:
properties:
hasMore:
type: boolean
versions:
items:
$ref: '#/components/schemas/ApiAppVersionSummary'
type: array
pinnedListOrder:
type: number
format: double
nullable: true
pinnedListUuid:
type: string
nullable: true
template:
allOf:
- $ref: '#/components/schemas/Exclude_DataAppTemplate.custom_'
nullable: true
spaceUuid:
type: string
nullable: true
createdByUserUuid:
type: string
description:
type: string
name:
type: string
appUuid:
type: string
required:
- hasMore
- versions
- pinnedListOrder
- pinnedListUuid
- template
- spaceUuid
- createdByUserUuid
- description
- name
- appUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetAppResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--name-string--description-string--createdByUserUuid-string--spaceUuid-string-or-null--template-Exclude_DataAppTemplate.custom_-or-null--pinnedListUuid-string-or-null--pinnedListOrder-number-or-null--versions-ApiAppVersionSummary-Array--hasMore-boolean__'
ApiCancelAppVersionResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
ApiRestoreAppVersionResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--version-number__'
ApiDuplicateAppResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--version-number__'
PromoteAppAction:
type: string
enum:
- create
- update
PromoteAppDiff:
properties:
space:
properties:
path:
type: string
name:
type: string
required:
- path
- name
type: object
nullable: true
upstreamAppUuid:
type: string
nullable: true
upstreamProjectName:
type: string
upstreamProjectUuid:
type: string
action:
$ref: '#/components/schemas/PromoteAppAction'
required:
- space
- upstreamAppUuid
- upstreamProjectName
- upstreamProjectUuid
- action
type: object
description: 'Preview of what promoting a data app from a preview project into
its
upstream (production) project will do. Drives the confirmation dialog.'
ApiSuccess_PromoteAppDiff_:
properties:
results:
$ref: '#/components/schemas/PromoteAppDiff'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPromoteAppDiffResponse:
$ref: '#/components/schemas/ApiSuccess_PromoteAppDiff_'
ApiSuccess__appUuid-string--projectUuid-string--version-number--action-PromoteAppAction__:
properties:
results:
properties:
action:
$ref: '#/components/schemas/PromoteAppAction'
version:
type: number
format: double
projectUuid:
type: string
appUuid:
type: string
required:
- action
- version
- projectUuid
- appUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPromoteAppResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--projectUuid-string--version-number--action-PromoteAppAction__'
ApiSuccess__appUuid-string--name-string--description-string__:
properties:
results:
properties:
description:
type: string
name:
type: string
appUuid:
type: string
required:
- description
- name
- appUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpdateAppResponse:
$ref: '#/components/schemas/ApiSuccess__appUuid-string--name-string--description-string__'
ApiUpdateAppRequest:
properties:
description:
type: string
name:
type: string
type: object
ApiDeleteAppResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
TogglePinnedItemInfo:
properties:
isPinned:
type: boolean
spaceUuid:
type: string
projectUuid:
type: string
pinnedListUuid:
type: string
required:
- isPinned
- spaceUuid
- projectUuid
- pinnedListUuid
type: object
ApiTogglePinnedItem:
properties:
results:
$ref: '#/components/schemas/TogglePinnedItemInfo'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSuccess__token-string__:
properties:
results:
properties:
token:
type: string
required:
- token
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPreviewTokenResponse:
$ref: '#/components/schemas/ApiSuccess__token-string__'
ApiSuccess__imageUrl-string__:
properties:
results:
properties:
imageUrl:
type: string
required:
- imageUrl
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAppImageUrlResponse:
$ref: '#/components/schemas/ApiSuccess__imageUrl-string__'
SchedulerFormat:
enum:
- csv
- xlsx
- image
- gsheets
- pdf
type: string
SchedulerCsvOptions:
properties:
exportPivotedData:
type: boolean
asAttachment:
type: boolean
limit:
anyOf:
- type: number
format: double
- type: string
enum:
- table
- all
formatted:
type: boolean
required:
- limit
- formatted
type: object
SchedulerImageOptions:
properties:
withPdf:
type: boolean
type: object
SchedulerGsheetsOptions:
properties:
tabName:
type: string
url:
type: string
gdriveOrganizationName:
type: string
gdriveName:
type: string
gdriveId:
type: string
required:
- url
- gdriveOrganizationName
- gdriveName
- gdriveId
type: object
Record_string.never_:
properties: {}
type: object
description: Construct a type with a set of properties K of type T
SchedulerPdfOptions:
$ref: '#/components/schemas/Record_string.never_'
SchedulerOptions:
anyOf:
- $ref: '#/components/schemas/SchedulerCsvOptions'
- $ref: '#/components/schemas/SchedulerImageOptions'
- $ref: '#/components/schemas/SchedulerGsheetsOptions'
- $ref: '#/components/schemas/SchedulerPdfOptions'
ThresholdOperator:
enum:
- greaterThan
- lessThan
- increasedBy
- decreasedBy
type: string
ThresholdOptions:
properties:
value:
type: number
format: double
fieldId:
type: string
operator:
$ref: '#/components/schemas/ThresholdOperator'
required:
- value
- fieldId
- operator
type: object
NotificationFrequency:
enum:
- always
- once
type: string
SchedulerBase:
properties:
projectName:
type: string
nullable: true
projectUuid:
type: string
nullable: true
includeLinks:
type: boolean
notificationFrequency:
$ref: '#/components/schemas/NotificationFrequency'
enabled:
type: boolean
thresholds:
items:
$ref: '#/components/schemas/ThresholdOptions'
type: array
options:
$ref: '#/components/schemas/SchedulerOptions'
appName:
type: string
nullable: true
appUuid:
type: string
nullable: true
savedSqlName:
type: string
nullable: true
savedSqlUuid:
type: string
nullable: true
dashboardName:
type: string
nullable: true
dashboardUuid:
type: string
nullable: true
savedChartName:
type: string
nullable: true
savedChartUuid:
type: string
nullable: true
projectSchedulerTimezone:
type: string
timezone:
type: string
cron:
type: string
format:
$ref: '#/components/schemas/SchedulerFormat'
createdByName:
type: string
nullable: true
createdBy:
type: string
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
message:
type: string
name:
type: string
schedulerUuid:
type: string
required:
- includeLinks
- enabled
- options
- appName
- appUuid
- savedSqlName
- savedSqlUuid
- dashboardName
- dashboardUuid
- savedChartName
- savedChartUuid
- cron
- format
- createdByName
- createdBy
- updatedAt
- createdAt
- name
- schedulerUuid
type: object
ChartScheduler:
allOf:
- $ref: '#/components/schemas/SchedulerBase'
- properties:
appUuid:
type: number
enum:
- null
nullable: true
savedSqlUuid:
type: number
enum:
- null
nullable: true
dashboardUuid:
type: number
enum:
- null
nullable: true
savedChartUuid:
type: string
required:
- appUuid
- savedSqlUuid
- dashboardUuid
- savedChartUuid
type: object
DashboardScheduler:
allOf:
- $ref: '#/components/schemas/SchedulerBase'
- properties:
selectedTabs:
items:
type: string
type: array
nullable: true
customViewportWidth:
type: number
format: double
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
filters:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
appUuid:
type: number
enum:
- null
nullable: true
savedSqlUuid:
type: number
enum:
- null
nullable: true
dashboardUuid:
type: string
savedChartUuid:
type: number
enum:
- null
nullable: true
required:
- selectedTabs
- appUuid
- savedSqlUuid
- dashboardUuid
- savedChartUuid
type: object
SqlChartScheduler:
allOf:
- $ref: '#/components/schemas/SchedulerBase'
- properties:
appUuid:
type: number
enum:
- null
nullable: true
savedSqlUuid:
type: string
dashboardUuid:
type: number
enum:
- null
nullable: true
savedChartUuid:
type: number
enum:
- null
nullable: true
required:
- appUuid
- savedSqlUuid
- dashboardUuid
- savedChartUuid
type: object
AppScheduler:
allOf:
- $ref: '#/components/schemas/SchedulerBase'
- properties:
appUuid:
type: string
savedSqlUuid:
type: number
enum:
- null
nullable: true
dashboardUuid:
type: number
enum:
- null
nullable: true
savedChartUuid:
type: number
enum:
- null
nullable: true
required:
- appUuid
- savedSqlUuid
- dashboardUuid
- savedChartUuid
type: object
Scheduler:
anyOf:
- $ref: '#/components/schemas/ChartScheduler'
- $ref: '#/components/schemas/DashboardScheduler'
- $ref: '#/components/schemas/SqlChartScheduler'
- $ref: '#/components/schemas/AppScheduler'
SchedulerSlackTarget:
properties:
channel:
type: string
schedulerUuid:
type: string
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
schedulerSlackTargetUuid:
type: string
required:
- channel
- schedulerUuid
- updatedAt
- createdAt
- schedulerSlackTargetUuid
type: object
SchedulerEmailTarget:
properties:
recipient:
type: string
schedulerUuid:
type: string
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
schedulerEmailTargetUuid:
type: string
required:
- recipient
- schedulerUuid
- updatedAt
- createdAt
- schedulerEmailTargetUuid
type: object
SchedulerMsTeamsTarget:
properties:
webhook:
type: string
schedulerUuid:
type: string
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
schedulerMsTeamsTargetUuid:
type: string
required:
- webhook
- schedulerUuid
- updatedAt
- createdAt
- schedulerMsTeamsTargetUuid
type: object
SchedulerGoogleChatTarget:
properties:
googleChatWebhook:
type: string
schedulerUuid:
type: string
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
schedulerGoogleChatTargetUuid:
type: string
required:
- googleChatWebhook
- schedulerUuid
- updatedAt
- createdAt
- schedulerGoogleChatTargetUuid
type: object
SchedulerJobStatus:
enum:
- scheduled
- started
- completed
- error
type: string
SchedulerRunStatus:
enum:
- completed
- partial_failure
- failed
- running
- scheduled
type: string
Record_string.AnyType_:
properties: {}
additionalProperties: {}
type: object
description: Construct a type with a set of properties K of type T
LogCounts:
properties:
error:
type: number
format: double
completed:
type: number
format: double
started:
type: number
format: double
scheduled:
type: number
format: double
total:
type: number
format: double
required:
- error
- completed
- started
- scheduled
- total
type: object
SchedulerResourceType:
enum:
- chart
- dashboard
- sqlChart
- app
type: string
SchedulerRun:
properties:
format:
$ref: '#/components/schemas/SchedulerFormat'
createdByUserName:
type: string
createdByUserUuid:
type: string
resourceName:
type: string
resourceUuid:
type: string
resourceType:
$ref: '#/components/schemas/SchedulerResourceType'
logCounts:
$ref: '#/components/schemas/LogCounts'
details:
allOf:
- $ref: '#/components/schemas/Record_string.AnyType_'
nullable: true
createdAt:
type: string
format: date-time
runStatus:
$ref: '#/components/schemas/SchedulerRunStatus'
status:
$ref: '#/components/schemas/SchedulerJobStatus'
scheduledTime:
type: string
format: date-time
schedulerName:
type: string
schedulerUuid:
type: string
runId:
type: string
required:
- format
- createdByUserName
- createdByUserUuid
- resourceName
- resourceUuid
- resourceType
- logCounts
- details
- createdAt
- runStatus
- status
- scheduledTime
- schedulerName
- schedulerUuid
- runId
type: object
SchedulerAndTargets:
allOf:
- $ref: '#/components/schemas/Scheduler'
- properties:
latestRun:
allOf:
- $ref: '#/components/schemas/SchedulerRun'
nullable: true
targets:
items:
anyOf:
- $ref: '#/components/schemas/SchedulerSlackTarget'
- $ref: '#/components/schemas/SchedulerEmailTarget'
- $ref: '#/components/schemas/SchedulerMsTeamsTarget'
- $ref: '#/components/schemas/SchedulerGoogleChatTarget'
type: array
required:
- targets
type: object
ApiAppSchedulersResponse:
properties:
results:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSchedulerAndTargetsResponse:
properties:
results:
$ref: '#/components/schemas/SchedulerAndTargets'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateAppSchedulerResponse:
$ref: '#/components/schemas/ApiSchedulerAndTargetsResponse'
ApiAppSummary:
properties:
lastVersionStatus:
allOf:
- $ref: '#/components/schemas/AppVersionStatus'
nullable: true
lastVersionNumber:
type: number
format: double
nullable: true
createdAt:
type: string
format: date-time
spaceName:
type: string
nullable: true
spaceUuid:
type: string
nullable: true
projectName:
type: string
projectUuid:
type: string
description:
type: string
name:
type: string
appUuid:
type: string
required:
- lastVersionStatus
- lastVersionNumber
- createdAt
- spaceName
- spaceUuid
- projectName
- projectUuid
- description
- name
- appUuid
type: object
KnexPaginateArgs:
properties:
page:
type: number
format: double
pageSize:
type: number
format: double
required:
- page
- pageSize
type: object
ApiSuccess__data-ApiAppSummary-Array--pagination_63_-KnexPaginateArgs-and-_totalPageCount-number--totalResults-number___:
properties:
results:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/ApiAppSummary'
type: array
required:
- data
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiMyAppsResponse:
$ref: '#/components/schemas/ApiSuccess__data-ApiAppSummary-Array--pagination_63_-KnexPaginateArgs-and-_totalPageCount-number--totalResults-number___'
AiRouter:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
projectUuids:
items:
type: string
type: array
enabled:
type: boolean
organizationUuid:
type: string
routerUuid:
type: string
required:
- updatedAt
- createdAt
- projectUuids
- enabled
- organizationUuid
- routerUuid
type: object
ApiSuccess_AiRouter_:
properties:
results:
$ref: '#/components/schemas/AiRouter'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiRouterResponse:
$ref: '#/components/schemas/ApiSuccess_AiRouter_'
UpsertAiRouterRequest:
properties:
projectUuids:
items:
type: string
type: array
enabled:
type: boolean
type: object
AiRouterInstruction:
properties:
createdAt:
type: string
format: date-time
taggedAgentUuids:
items:
type: string
type: array
instruction:
type: string
projectUuid:
type: string
routerUuid:
type: string
instructionVersionUuid:
type: string
required:
- createdAt
- taggedAgentUuids
- instruction
- projectUuid
- routerUuid
- instructionVersionUuid
type: object
description: 'Per-project routing instructions written by an admin. Versioned
append-only
(like agent instructions): the latest version for a (router, project) pair
is
the active one. `instruction` is free text where tagged agents are embedded
as
`@[Agent Name](agent-uuid)` tokens; `taggedAgentUuids` is the extracted list,
kept alongside the text so references can be validated and orphans detected.'
ApiSuccess_AiRouterInstruction-or-null_:
properties:
results:
allOf:
- $ref: '#/components/schemas/AiRouterInstruction'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiRouterInstructionResponse:
$ref: '#/components/schemas/ApiSuccess_AiRouterInstruction-or-null_'
UpsertAiRouterInstructionRequest:
properties:
taggedAgentUuids:
items:
type: string
type: array
instruction:
type: string
required:
- taggedAgentUuids
- instruction
type: object
AiRouterDecisionConfidence:
type: string
enum:
- high
- medium
- low
AiRouterDecisionCandidate:
properties:
description:
type: string
nullable: true
name:
type: string
agentUuid:
type: string
required:
- description
- name
- agentUuid
type: object
AiRouterRouteDecision:
properties:
candidates:
items:
$ref: '#/components/schemas/AiRouterDecisionCandidate'
type: array
reasoning:
type: string
confidence:
$ref: '#/components/schemas/AiRouterDecisionConfidence'
suggestedAgentUuid:
type: string
decisionUuid:
type: string
required:
- candidates
- reasoning
- confidence
- suggestedAgentUuid
- decisionUuid
type: object
AiRouterRouteNextAction:
type: string
enum:
- create_thread
- show_picker
AiRouterRouteResponseResult:
properties:
nextAction:
$ref: '#/components/schemas/AiRouterRouteNextAction'
decision:
$ref: '#/components/schemas/AiRouterRouteDecision'
required:
- nextAction
- decision
type: object
ApiSuccess_AiRouterRouteResponseResult_:
properties:
results:
$ref: '#/components/schemas/AiRouterRouteResponseResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiRouterRouteResponse:
$ref: '#/components/schemas/ApiSuccess_AiRouterRouteResponseResult_'
AiRouterRouteRequest:
properties:
projectUuid:
type: string
prompt:
type: string
required:
- projectUuid
- prompt
type: object
ApiAiRouterDecisionCommitResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
AiRouterDecisionCommitRequest:
properties:
threadUuid:
type: string
chosenAgentUuid:
type: string
required:
- threadUuid
- chosenAgentUuid
type: object
AiRouterSelectionMode:
type: string
enum:
- auto_routed
- manual_pick
AiRouterDecision:
properties:
committedAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
selectionMode:
allOf:
- $ref: '#/components/schemas/AiRouterSelectionMode'
nullable: true
candidateAgentUuids:
items:
type: string
type: array
reasoning:
type: string
confidence:
$ref: '#/components/schemas/AiRouterDecisionConfidence'
chosenAgentUuid:
type: string
nullable: true
suggestedAgentUuid:
type: string
prompt:
type: string
userUuid:
type: string
threadUuid:
type: string
nullable: true
routerUuid:
type: string
decisionUuid:
type: string
required:
- committedAt
- createdAt
- selectionMode
- candidateAgentUuids
- reasoning
- confidence
- chosenAgentUuid
- suggestedAgentUuid
- prompt
- userUuid
- threadUuid
- routerUuid
- decisionUuid
type: object
ApiSuccess_AiRouterDecision-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiRouterDecision'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiRouterDecisionListResponse:
$ref: '#/components/schemas/ApiSuccess_AiRouterDecision-Array_'
DashboardSummaryTone:
enum:
- friendly
- formal
- direct
- enthusiastic
type: string
DashboardSummary:
properties:
createdAt:
type: string
format: date-time
summary:
type: string
audiences:
items:
type: string
type: array
tone:
$ref: '#/components/schemas/DashboardSummaryTone'
context:
type: string
nullable: true
dashboardVersionId:
type: number
format: double
dashboardUuid:
type: string
dashboardSummaryUuid:
type: string
required:
- createdAt
- summary
- audiences
- tone
- dashboardVersionId
- dashboardUuid
- dashboardSummaryUuid
type: object
ApiAiDashboardSummaryResponse:
properties:
results:
$ref: '#/components/schemas/DashboardSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_DashboardSummary.context-or-tone-or-audiences_:
properties:
context:
type: string
nullable: true
tone:
$ref: '#/components/schemas/DashboardSummaryTone'
audiences:
items:
type: string
type: array
required:
- tone
- audiences
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiAiGetDashboardSummaryResponse:
properties:
results:
$ref: '#/components/schemas/DashboardSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiGenerateCustomVizResponse:
properties:
results:
type: string
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
GeneratedChartMetadata:
properties:
description:
type: string
title:
type: string
required:
- description
- title
type: object
ApiAiGenerateChartMetadataResponse:
properties:
results:
$ref: '#/components/schemas/GeneratedChartMetadata'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Field.name-or-label-or-description-or-type_:
properties:
description:
type: string
name:
type: string
type:
type: string
label:
type: string
required:
- name
- type
- label
type: object
description: From T, pick a set of properties whose keys are in the union K
GenerateChartMetadataRequest:
properties:
chartConfigJson:
type: string
fieldsContext:
items:
$ref: '#/components/schemas/Pick_Field.name-or-label-or-description-or-type_'
type: array
filters:
$ref: '#/components/schemas/Filters'
metrics:
items:
type: string
type: array
dimensions:
items:
type: string
type: array
chartType:
type: string
tableName:
type: string
required:
- fieldsContext
- metrics
- dimensions
- chartType
- tableName
type: object
GeneratedTableCalculation:
properties:
format:
$ref: '#/components/schemas/CustomFormat'
type:
$ref: '#/components/schemas/TableCalculationType'
displayName:
type: string
sql:
type: string
required:
- format
- type
- displayName
- sql
type: object
ApiAiGenerateTableCalculationResponse:
properties:
results:
$ref: '#/components/schemas/GeneratedTableCalculation'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Field.name-or-label-or-description-or-type-or-table_:
properties:
description:
type: string
name:
type: string
type:
type: string
label:
type: string
table:
type: string
required:
- name
- type
- label
- table
type: object
description: From T, pick a set of properties whose keys are in the union K
TableCalculationFieldContext:
allOf:
- $ref: '#/components/schemas/Pick_Field.name-or-label-or-description-or-type-or-table_'
- properties:
fieldType:
type: string
enum:
- metric
- dimension
- table_calculation
required:
- fieldType
type: object
GenerateTableCalculationRequest:
properties:
currentSql:
type: string
existingTableCalculations:
items:
type: string
type: array
fieldsContext:
items:
$ref: '#/components/schemas/TableCalculationFieldContext'
type: array
tableName:
type: string
prompt:
type: string
required:
- fieldsContext
- tableName
- prompt
type: object
GeneratedFormulaTableCalculation:
properties:
format:
$ref: '#/components/schemas/CustomFormat'
type:
$ref: '#/components/schemas/TableCalculationType'
displayName:
type: string
formula:
type: string
required:
- format
- type
- displayName
- formula
type: object
ApiAiGenerateFormulaTableCalculationResponse:
properties:
results:
$ref: '#/components/schemas/GeneratedFormulaTableCalculation'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FormulaAiContext:
properties:
existingTableCalculations:
items:
type: string
type: array
fieldsContext:
items:
$ref: '#/components/schemas/TableCalculationFieldContext'
type: array
tableName:
type: string
required:
- existingTableCalculations
- fieldsContext
- tableName
type: object
GenerateFormulaTableCalculationRequest:
anyOf:
- allOf:
- properties:
currentFormula:
type: string
prompt:
type: string
mode:
type: string
enum:
- prompt
nullable: false
required:
- prompt
- mode
type: object
- $ref: '#/components/schemas/FormulaAiContext'
- allOf:
- properties:
sourceSql:
type: string
mode:
type: string
enum:
- convert-sql
nullable: false
required:
- sourceSql
- mode
type: object
- $ref: '#/components/schemas/FormulaAiContext'
GeneratedTooltip:
properties:
html:
type: string
required:
- html
type: object
ApiAiGenerateTooltipResponse:
properties:
results:
$ref: '#/components/schemas/GeneratedTooltip'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
TooltipFieldContext:
properties:
label:
type: string
name:
type: string
required:
- name
type: object
GenerateTooltipRequest:
properties:
currentHtml:
type: string
fieldsContext:
items:
$ref: '#/components/schemas/TooltipFieldContext'
type: array
prompt:
type: string
required:
- fieldsContext
- prompt
type: object
AiAgentDocumentRelevance:
type: string
enum:
- high
- medium
- low
- none
AiAgentDocumentStructuredSummary:
properties:
warning:
type: string
nullable: true
relevance:
$ref: '#/components/schemas/AiAgentDocumentRelevance'
useWhen:
type: string
relatedExploreNames:
items:
type: string
type: array
definedTerms:
items:
type: string
type: array
description:
type: string
required:
- warning
- relevance
- useWhen
- relatedExploreNames
- definedTerms
- description
type: object
Pick_AiAgentDocument.Exclude_keyofAiAgentDocument.storageKey__:
properties:
name:
type: string
projectUuid:
type: string
nullable: true
createdAt:
type: string
format: date-time
organizationUuid:
type: string
uuid:
type: string
originalFilename:
type: string
mimeType:
type: string
contentSizeBytes:
type: number
format: double
summary:
$ref: '#/components/schemas/AiAgentDocumentStructuredSummary'
agentAccess:
items:
type: string
type: array
createdByUserUuid:
type: string
nullable: true
updatedByUserUuid:
type: string
nullable: true
updatedAt:
type: string
format: date-time
required:
- name
- projectUuid
- createdAt
- organizationUuid
- uuid
- originalFilename
- mimeType
- contentSizeBytes
- summary
- agentAccess
- createdByUserUuid
- updatedByUserUuid
- updatedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_AiAgentDocument.storageKey_:
$ref: '#/components/schemas/Pick_AiAgentDocument.Exclude_keyofAiAgentDocument.storageKey__'
description: Construct a type with the properties of T except for those in type
K.
AiAgentDocumentSummary:
$ref: '#/components/schemas/Omit_AiAgentDocument.storageKey_'
ApiAiAgentDocumentSummaryListResponse:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentDocumentSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiAgentDocument:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedByUserUuid:
type: string
nullable: true
createdByUserUuid:
type: string
nullable: true
agentAccess:
items:
type: string
type: array
storageKey:
type: string
summary:
$ref: '#/components/schemas/AiAgentDocumentStructuredSummary'
contentSizeBytes:
type: number
format: double
mimeType:
type: string
originalFilename:
type: string
name:
type: string
projectUuid:
type: string
nullable: true
organizationUuid:
type: string
uuid:
type: string
required:
- updatedAt
- createdAt
- updatedByUserUuid
- createdByUserUuid
- agentAccess
- storageKey
- summary
- contentSizeBytes
- mimeType
- originalFilename
- name
- projectUuid
- organizationUuid
- uuid
type: object
ApiAiAgentDocumentResponse:
properties:
results:
$ref: '#/components/schemas/AiAgentDocument'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateAiAgentDocument:
properties:
agentAccess:
items:
type: string
type: array
projectUuid:
type: string
nullable: true
content:
type: string
mimeType:
type: string
originalFilename:
type: string
name:
type: string
required:
- content
- mimeType
- originalFilename
- name
type: object
? Pick_AiAgent.uuid-or-name-or-description-or-integrations-or-tags-or-projectUuid-or-organizationUuid-or-createdAt-or-updatedAt-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version_
: properties:
description:
type: string
nullable: true
name:
type: string
projectUuid:
type: string
createdAt:
type: string
format: date-time
organizationUuid:
type: string
uuid:
type: string
userAccess:
items:
type: string
type: array
updatedAt:
type: string
format: date-time
integrations:
items:
properties:
channelId:
type: string
type:
type: string
enum:
- slack
nullable: false
required:
- channelId
- type
type: object
type: array
tags:
items:
type: string
type: array
nullable: true
instruction:
type: string
nullable: true
imageUrl:
type: string
nullable: true
groupAccess:
items:
type: string
type: array
spaceAccess:
items:
type: string
type: array
enableDataAccess:
type: boolean
enableSelfImprovement:
type: boolean
enableContentTools:
type: boolean
version:
type: number
format: double
required:
- description
- name
- projectUuid
- createdAt
- organizationUuid
- uuid
- userAccess
- updatedAt
- integrations
- tags
- instruction
- imageUrl
- groupAccess
- spaceAccess
- enableDataAccess
- enableSelfImprovement
- enableContentTools
- version
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentSummary:
$ref: '#/components/schemas/Pick_AiAgent.uuid-or-name-or-description-or-integrations-or-tags-or-projectUuid-or-organizationUuid-or-createdAt-or-updatedAt-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version_'
ApiAiAgentSummaryResponse:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiAgentUserPreferences:
properties:
defaultAgentUuid:
type: string
required:
- defaultAgentUuid
type: object
ApiSuccess_AiAgentUserPreferences_:
properties:
results:
$ref: '#/components/schemas/AiAgentUserPreferences'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetUserAgentPreferencesResponse:
anyOf:
- $ref: '#/components/schemas/ApiSuccess_AiAgentUserPreferences_'
- $ref: '#/components/schemas/ApiSuccessEmpty'
ApiUpdateUserAgentPreferencesResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
ApiUpdateUserAgentPreferences:
$ref: '#/components/schemas/AiAgentUserPreferences'
AiMcpServerAuthType:
type: string
enum:
- none
- bearer
- oauth
AiMcpCredentialScope:
type: string
enum:
- shared
- user
AiMcpServerConnectionStatus:
type: string
enum:
- not_connected
- connecting
- connected
- error
AiMcpServer:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
connectedByUserUuid:
type: string
nullable: true
error:
type: string
nullable: true
connectionStatus:
allOf:
- $ref: '#/components/schemas/AiMcpServerConnectionStatus'
nullable: true
credentialScope:
allOf:
- $ref: '#/components/schemas/AiMcpCredentialScope'
nullable: true
hasCredentials:
type: boolean
allowOAuthCredentialSharing:
type: boolean
authType:
$ref: '#/components/schemas/AiMcpServerAuthType'
iconUrl:
type: string
nullable: true
url:
type: string
name:
type: string
projectUuid:
type: string
uuid:
type: string
required:
- updatedAt
- createdAt
- connectedByUserUuid
- error
- connectionStatus
- credentialScope
- hasCredentials
- allowOAuthCredentialSharing
- authType
- iconUrl
- url
- name
- projectUuid
- uuid
type: object
ApiSuccess_AiMcpServer-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiMcpServer'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiMcpServerListResponse:
$ref: '#/components/schemas/ApiSuccess_AiMcpServer-Array_'
ApiSuccess_AiMcpServer_:
properties:
results:
$ref: '#/components/schemas/AiMcpServer'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiMcpServerResponse:
$ref: '#/components/schemas/ApiSuccess_AiMcpServer_'
ApiCreateAiMcpServer:
properties:
credentials:
properties:
bearerToken:
type: string
required:
- bearerToken
type: object
nullable: true
credentialScope:
$ref: '#/components/schemas/AiMcpCredentialScope'
allowOAuthCredentialSharing:
type: boolean
authType:
$ref: '#/components/schemas/AiMcpServerAuthType'
url:
type: string
name:
type: string
required:
- authType
- url
- name
type: object
AiMcpGithubAvailability:
properties:
alreadyConnected:
type: boolean
available:
type: boolean
required:
- alreadyConnected
- available
type: object
ApiSuccess_AiMcpGithubAvailability_:
properties:
results:
$ref: '#/components/schemas/AiMcpGithubAvailability'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiMcpGithubAvailabilityResponse:
$ref: '#/components/schemas/ApiSuccess_AiMcpGithubAvailability_'
ApiConnectGithubMcpServerBody:
properties:
credentialScope:
$ref: '#/components/schemas/AiMcpCredentialScope'
personalAccessToken:
type: string
required:
- credentialScope
- personalAccessToken
type: object
AiMcpServerTool:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
meta:
nullable: true
annotations:
nullable: true
inputSchema: {}
description:
type: string
nullable: true
title:
type: string
nullable: true
toolName:
type: string
mcpServerUuid:
type: string
uuid:
type: string
required:
- updatedAt
- createdAt
- meta
- annotations
- inputSchema
- description
- title
- toolName
- mcpServerUuid
- uuid
type: object
ApiSuccess_AiMcpServerTool-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiMcpServerTool'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiMcpServerToolListResponse:
$ref: '#/components/schemas/ApiSuccess_AiMcpServerTool-Array_'
ApiSuccess__authorizationUrl-string__:
properties:
results:
properties:
authorizationUrl:
type: string
required:
- authorizationUrl
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiStartAiMcpOAuthResponse:
$ref: '#/components/schemas/ApiSuccess__authorizationUrl-string__'
ApiAiMcpOAuthCredentialRequest:
properties:
credentialScope:
$ref: '#/components/schemas/AiMcpCredentialScope'
type: object
AiAgentUser:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
AiAgentThreadSummary_AiAgentUser_:
properties:
user:
$ref: '#/components/schemas/AiAgentUser'
firstMessage:
properties:
message:
type: string
uuid:
type: string
required:
- message
- uuid
type: object
titleGeneratedAt:
type: string
nullable: true
title:
type: string
nullable: true
createdFrom:
type: string
createdAt:
type: string
agentUuid:
type: string
uuid:
type: string
required:
- user
- firstMessage
- titleGeneratedAt
- title
- createdFrom
- createdAt
- agentUuid
- uuid
type: object
AiAgentProjectThreadSummary:
allOf:
- $ref: '#/components/schemas/AiAgentThreadSummary_AiAgentUser_'
- properties:
agentImageUrl:
type: string
nullable: true
agentName:
type: string
required:
- agentImageUrl
- agentName
type: object
KnexPaginatedData_AiAgentProjectThreadSummary-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/AiAgentProjectThreadSummary'
type: array
required:
- data
type: object
ApiSuccess_KnexPaginatedData_AiAgentProjectThreadSummary-Array__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_AiAgentProjectThreadSummary-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentProjectThreadSummaryListResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_AiAgentProjectThreadSummary-Array__'
? Pick_BaseAiAgent.uuid-or-projectUuid-or-organizationUuid-or-integrations-or-tags-or-name-or-description-or-createdAt-or-updatedAt-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version_
: properties:
description:
type: string
nullable: true
name:
type: string
projectUuid:
type: string
createdAt:
type: string
format: date-time
organizationUuid:
type: string
uuid:
type: string
userAccess:
items:
type: string
type: array
updatedAt:
type: string
format: date-time
integrations:
items:
properties:
channelId:
type: string
type:
type: string
enum:
- slack
nullable: false
required:
- channelId
- type
type: object
type: array
tags:
items:
type: string
type: array
nullable: true
instruction:
type: string
nullable: true
imageUrl:
type: string
nullable: true
groupAccess:
items:
type: string
type: array
spaceAccess:
items:
type: string
type: array
enableDataAccess:
type: boolean
enableSelfImprovement:
type: boolean
enableContentTools:
type: boolean
version:
type: number
format: double
required:
- description
- name
- projectUuid
- createdAt
- organizationUuid
- uuid
- userAccess
- updatedAt
- integrations
- tags
- instruction
- imageUrl
- groupAccess
- spaceAccess
- enableDataAccess
- enableSelfImprovement
- enableContentTools
- version
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgent:
$ref: '#/components/schemas/Pick_BaseAiAgent.uuid-or-projectUuid-or-organizationUuid-or-integrations-or-tags-or-name-or-description-or-createdAt-or-updatedAt-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version_'
ApiAiAgentResponse:
properties:
results:
$ref: '#/components/schemas/AiAgent'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiAgentMcpServerTool:
allOf:
- $ref: '#/components/schemas/AiMcpServerTool'
- properties:
enabled:
type: boolean
agentUuid:
type: string
required:
- enabled
- agentUuid
type: object
ApiSuccess_AiAgentMcpServerTool-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentMcpServerTool'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentMcpServerToolListResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentMcpServerTool-Array_'
Pick_AiAgentMcpServerTool.toolName-or-enabled_:
properties:
toolName:
type: string
enabled:
type: boolean
required:
- toolName
- enabled
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentMcpServerToolUpdate:
$ref: '#/components/schemas/Pick_AiAgentMcpServerTool.toolName-or-enabled_'
ApiUpdateAiAgentMcpServerToolsRequest:
properties:
toolSettings:
items:
$ref: '#/components/schemas/AiAgentMcpServerToolUpdate'
type: array
required:
- toolSettings
type: object
AiModelOption:
properties:
supportsReasoning:
type: boolean
default:
type: boolean
provider:
type: string
description:
type: string
displayName:
type: string
name:
type: string
required:
- supportsReasoning
- default
- provider
- description
- displayName
- name
type: object
ApiSuccess_AiModelOption-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiModelOption'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentModelOptionsResponse:
$ref: '#/components/schemas/ApiSuccess_AiModelOption-Array_'
AgentSuggestionTool:
type: string
enum:
- generateDashboard
- generateVisualization
- runSql
- findContent
AgentSuggestionPromptChip:
properties:
defaults:
properties:
timeframe:
type: string
nullable: true
metrics:
items:
type: string
type: array
dimensions:
items:
type: string
type: array
explore:
type: string
nullable: true
required:
- timeframe
- metrics
- dimensions
- explore
type: object
tool:
$ref: '#/components/schemas/AgentSuggestionTool'
label:
type: string
kind:
type: string
enum:
- prompt
nullable: false
required:
- defaults
- tool
- label
- kind
type: object
AgentSuggestionNavigateChip:
properties:
url:
type: string
label:
type: string
kind:
type: string
enum:
- navigate
nullable: false
required:
- url
- label
- kind
type: object
AgentSuggestion:
anyOf:
- $ref: '#/components/schemas/AgentSuggestionPromptChip'
- $ref: '#/components/schemas/AgentSuggestionNavigateChip'
ApiSuccess__chips-AgentSuggestion-Array__:
properties:
results:
properties:
chips:
items:
$ref: '#/components/schemas/AgentSuggestion'
type: array
required:
- chips
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAgentSuggestionsResponse:
$ref: '#/components/schemas/ApiSuccess__chips-AgentSuggestion-Array__'
ReadinessScoreEvaluation:
properties:
recommendations:
items:
type: string
type: array
score:
type: number
format: double
required:
- recommendations
- score
type: object
MetadataCompletenessEvaluation:
$ref: '#/components/schemas/ReadinessScoreEvaluation'
ExploreAnalysisEvaluation:
$ref: '#/components/schemas/ReadinessScoreEvaluation'
InstructionQualityEvaluation:
$ref: '#/components/schemas/ReadinessScoreEvaluation'
ReadinessScore:
properties:
overallScore:
type: number
format: double
metadataCompleteness:
$ref: '#/components/schemas/MetadataCompletenessEvaluation'
exploreAnalysis:
$ref: '#/components/schemas/ExploreAnalysisEvaluation'
instructionQuality:
$ref: '#/components/schemas/InstructionQualityEvaluation'
timestamp:
type: string
format: date-time
projectSnapshot:
properties:
fieldCount:
type: number
format: double
exploreCount:
type: number
format: double
required:
- fieldCount
- exploreCount
type: object
required:
- overallScore
- metadataCompleteness
- exploreAnalysis
- instructionQuality
- timestamp
- projectSnapshot
type: object
additionalProperties: true
ApiSuccess_ReadinessScore_:
properties:
results:
$ref: '#/components/schemas/ReadinessScore'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAgentReadinessScoreResponse:
$ref: '#/components/schemas/ApiSuccess_ReadinessScore_'
AiAgentVerifiedArtifact:
properties:
promptUuid:
type: string
nullable: true
threadUuid:
type: string
referenceCount:
type: number
format: double
verifiedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
verifiedAt:
type: string
format: date-time
description:
type: string
nullable: true
title:
type: string
nullable: true
artifactType:
type: string
enum:
- chart
- dashboard
versionUuid:
type: string
artifactUuid:
type: string
required:
- promptUuid
- threadUuid
- referenceCount
- verifiedBy
- verifiedAt
- description
- title
- artifactType
- versionUuid
- artifactUuid
type: object
KnexPaginatedData_AiAgentVerifiedArtifact-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/AiAgentVerifiedArtifact'
type: array
required:
- data
type: object
ApiSuccess_KnexPaginatedData_AiAgentVerifiedArtifact-Array__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_AiAgentVerifiedArtifact-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentVerifiedArtifactsResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_AiAgentVerifiedArtifact-Array__'
ApiSuccess__question-string--uuid-string_-Array_:
properties:
results:
items:
properties:
uuid:
type: string
question:
type: string
required:
- uuid
- question
type: object
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentVerifiedQuestionsResponse:
$ref: '#/components/schemas/ApiSuccess__question-string--uuid-string_-Array_'
ApiCreateAiAgentResponse:
properties:
results:
$ref: '#/components/schemas/AiAgent'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_AiAgent.projectUuid-or-integrations-or-tags-or-name-or-description-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-version_
: properties:
description:
type: string
nullable: true
name:
type: string
projectUuid:
type: string
userAccess:
items:
type: string
type: array
integrations:
items:
properties:
channelId:
type: string
type:
type: string
enum:
- slack
nullable: false
required:
- channelId
- type
type: object
type: array
tags:
items:
type: string
type: array
nullable: true
instruction:
type: string
nullable: true
imageUrl:
type: string
nullable: true
groupAccess:
items:
type: string
type: array
spaceAccess:
items:
type: string
type: array
enableDataAccess:
type: boolean
enableSelfImprovement:
type: boolean
version:
type: number
format: double
required:
- description
- name
- projectUuid
- userAccess
- integrations
- tags
- instruction
- imageUrl
- groupAccess
- spaceAccess
- enableDataAccess
- enableSelfImprovement
- version
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiCreateAiAgent:
allOf:
- $ref: '#/components/schemas/Pick_AiAgent.projectUuid-or-integrations-or-tags-or-name-or-description-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-version_'
- properties:
mcpServerUuids:
items:
type: string
type: array
enableContentTools:
type: boolean
type: object
? Partial_Pick_AiAgent.projectUuid-or-integrations-or-tags-or-name-or-description-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version__
: properties:
description:
type: string
nullable: true
name:
type: string
projectUuid:
type: string
userAccess:
items:
type: string
type: array
integrations:
items:
properties:
channelId:
type: string
type:
type: string
enum:
- slack
nullable: false
required:
- channelId
- type
type: object
type: array
tags:
items:
type: string
type: array
nullable: true
instruction:
type: string
nullable: true
imageUrl:
type: string
nullable: true
groupAccess:
items:
type: string
type: array
spaceAccess:
items:
type: string
type: array
enableDataAccess:
type: boolean
enableSelfImprovement:
type: boolean
enableContentTools:
type: boolean
version:
type: number
format: double
type: object
description: Make all properties in T optional
ApiUpdateAiAgent:
allOf:
- $ref: '#/components/schemas/Partial_Pick_AiAgent.projectUuid-or-integrations-or-tags-or-name-or-description-or-instruction-or-imageUrl-or-groupAccess-or-userAccess-or-spaceAccess-or-enableDataAccess-or-enableSelfImprovement-or-enableContentTools-or-version__'
- properties:
mcpServerUuids:
items:
type: string
type: array
uuid:
type: string
required:
- uuid
type: object
AiAgentThreadSummary:
properties:
user:
$ref: '#/components/schemas/AiAgentUser'
firstMessage:
properties:
message:
type: string
uuid:
type: string
required:
- message
- uuid
type: object
titleGeneratedAt:
type: string
nullable: true
title:
type: string
nullable: true
createdFrom:
type: string
createdAt:
type: string
agentUuid:
type: string
uuid:
type: string
required:
- user
- firstMessage
- titleGeneratedAt
- title
- createdFrom
- createdAt
- agentUuid
- uuid
type: object
ApiAiAgentThreadSummaryListResponse:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentThreadSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiChartRuntimeOverrides:
properties:
dateZoom:
$ref: '#/components/schemas/DateZoom'
dashboardParameters:
$ref: '#/components/schemas/ParametersValuesMap'
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
type: object
description: 'Runtime state captured at pin time for a chart context. When a
user pins a
chart from a dashboard view, these are the dashboard-level overrides that
were applied to the chart on screen at that moment.'
AiPromptContextItem:
anyOf:
- properties:
chartKind:
allOf:
- $ref: '#/components/schemas/ChartKind'
nullable: true
runtimeOverrides:
allOf:
- $ref: '#/components/schemas/AiChartRuntimeOverrides'
nullable: true
displayName:
type: string
nullable: true
pinnedVersionUuid:
type: string
nullable: true
chartSlug:
type: string
nullable: true
chartUuid:
type: string
type:
type: string
enum:
- chart
nullable: false
required:
- chartKind
- runtimeOverrides
- displayName
- pinnedVersionUuid
- chartSlug
- chartUuid
- type
type: object
- properties:
displayName:
type: string
nullable: true
pinnedVersionUuid:
type: string
nullable: true
dashboardSlug:
type: string
nullable: true
dashboardUuid:
type: string
type:
type: string
enum:
- dashboard
nullable: false
required:
- displayName
- pinnedVersionUuid
- dashboardSlug
- dashboardUuid
- type
type: object
- properties:
displayName:
type: string
nullable: true
promptUuid:
type: string
nullable: true
threadUuid:
type: string
type:
type: string
enum:
- thread
nullable: false
required:
- displayName
- promptUuid
- threadUuid
- type
type: object
AiPromptContext:
items:
$ref: '#/components/schemas/AiPromptContextItem'
type: array
AiAgentMessageUser_AiAgentUser_:
properties:
context:
$ref: '#/components/schemas/AiPromptContext'
user:
$ref: '#/components/schemas/AiAgentUser'
createdAt:
type: string
message:
type: string
threadUuid:
type: string
uuid:
type: string
role:
type: string
enum:
- user
nullable: false
required:
- context
- user
- createdAt
- message
- threadUuid
- uuid
- role
type: object
AiAgentBaseToolCall:
properties:
toolArgs:
additionalProperties: true
type: object
createdAt:
type: string
format: date-time
parentToolCallId:
type: string
nullable: true
toolCallId:
type: string
promptUuid:
type: string
uuid:
type: string
required:
- toolArgs
- createdAt
- parentToolCallId
- toolCallId
- promptUuid
- uuid
type: object
AiAgentMcpToolName:
type: string
Pick_AiMcpServer.uuid-or-name-or-iconUrl_:
properties:
name:
type: string
uuid:
type: string
iconUrl:
type: string
nullable: true
required:
- name
- uuid
- iconUrl
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentToolCallMcpServer:
$ref: '#/components/schemas/Pick_AiMcpServer.uuid-or-name-or-iconUrl_'
AiAgentToolCall:
allOf:
- $ref: '#/components/schemas/AiAgentBaseToolCall'
- anyOf:
- properties:
toolName:
type: string
toolType:
type: string
enum:
- built-in
nullable: false
required:
- toolName
- toolType
type: object
- properties:
mcpServer:
allOf:
- $ref: '#/components/schemas/AiAgentToolCallMcpServer'
nullable: true
toolName:
$ref: '#/components/schemas/AiAgentMcpToolName'
toolType:
type: string
enum:
- mcp
nullable: false
required:
- mcpServer
- toolName
- toolType
type: object
AiAgentBaseToolResult:
properties:
toolCallId:
type: string
createdAt:
type: string
format: date-time
result:
type: string
promptUuid:
type: string
uuid:
type: string
required:
- toolCallId
- createdAt
- result
- promptUuid
- uuid
type: object
Exclude_ToolName.proposeChange_:
type: string
enum:
- generateDashboard
- generateVisualization
- runSql
- findContent
- generateBarVizConfig
- generateTableVizConfig
- generateTimeSeriesVizConfig
- generateHashes
- generateUuids
- listContent
- findExplores
- findFields
- searchSemanticLayer
- discoverFields
- searchFieldValues
- findDashboards
- findCharts
- getDashboardCharts
- readContent
- editContent
- createContent
- runContentQuery
- improveContext
- listProjects
- getProjectInfo
- loadSkill
- loadProjectContext
- editDbtProject
- repoShell
- setupPreviewDeploy
- runQuery
- runSavedChart
- listWarehouseTables
- describeWarehouseTable
- listKnowledgeDocuments
- getKnowledgeDocumentContent
- readPinnedThread
description: Exclude from T those types that are assignable to U
AiAgentToolResult:
allOf:
- $ref: '#/components/schemas/AiAgentBaseToolResult'
- anyOf:
- properties:
metadata:
anyOf:
- properties:
userFeedback:
type: string
enum:
- accepted
- rejected
changeUuid:
type: string
status:
type: string
enum:
- success
nullable: false
required:
- changeUuid
- status
type: object
- properties:
status:
type: string
enum:
- error
nullable: false
required:
- status
type: object
toolName:
type: string
enum:
- proposeChange
nullable: false
toolType:
type: string
enum:
- built-in
nullable: false
required:
- metadata
- toolName
- toolType
type: object
- properties:
metadata:
anyOf:
- properties:
userFeedback:
type: string
enum:
- accepted
- rejected
changeUuid:
type: string
status:
type: string
enum:
- success
nullable: false
required:
- changeUuid
- status
type: object
- properties:
status:
type: string
enum:
- error
nullable: false
required:
- status
type: object
- properties:
status:
type: string
enum:
- success
- error
required:
- status
type: object
- properties:
status:
type: string
enum:
- error
- success
required:
- status
type: object
- properties:
ranking:
properties:
topMatchingFields:
items:
properties:
verifiedChartUsage:
type: number
format: double
nullable: true
chartUsage:
type: number
format: double
nullable: true
searchRank:
type: number
format: double
nullable: true
fieldType:
type: string
tableName:
type: string
label:
type: string
name:
type: string
required:
- fieldType
- tableName
- label
- name
type: object
type: array
exploreSearchResults:
items:
properties:
joinedTables:
items:
type: string
type: array
nullable: true
searchRank:
type: number
format: double
nullable: true
label:
type: string
name:
type: string
required:
- label
- name
type: object
type: array
searchQuery:
type: string
required:
- searchQuery
type: object
status:
type: string
enum:
- error
- success
required:
- status
type: object
- properties:
ranking:
properties:
searchQueries:
items:
properties:
pagination:
properties:
totalPageCount:
type: number
format: double
totalResults:
type: number
format: double
pageSize:
type: number
format: double
page:
type: number
format: double
required:
- totalPageCount
- totalResults
- pageSize
- page
type: object
results:
items:
properties:
verifiedChartUsage:
type: number
format: double
nullable: true
chartUsage:
type: number
format: double
nullable: true
searchRank:
type: number
format: double
nullable: true
fieldType:
type: string
tableName:
type: string
label:
type: string
name:
type: string
required:
- fieldType
- tableName
- label
- name
type: object
type: array
label:
type: string
required:
- results
- label
type: object
type: array
required:
- searchQueries
type: object
status:
type: string
enum:
- error
- success
required:
- status
type: object
- properties:
contentSizeBytes:
type: number
format: double
name:
type: string
status:
type: string
enum:
- success
nullable: false
required:
- contentSizeBytes
- name
- status
type: object
- properties:
status:
type: string
enum:
- error
- not_found
- success
required:
- status
type: object
- properties:
streamingMessage: {}
status:
type: string
enum:
- streaming
nullable: false
required:
- status
type: object
- properties:
streamingMessage: {}
discovery:
anyOf:
- properties:
rationale:
type: string
nullable: true
fields:
items:
properties:
description:
type: string
nullable: true
isFromJoinedTable:
type: boolean
caseSensitiveFilters:
type: string
enum:
- 'false'
- not_applicable
- 'true'
fieldFilterType:
type: string
fieldValueType:
type: string
fieldType:
type: string
enum:
- dimension
- metric
table:
type: string
label:
type: string
name:
type: string
fieldId:
type: string
required:
- description
- isFromJoinedTable
- caseSensitiveFilters
- fieldFilterType
- fieldValueType
- fieldType
- table
- label
- name
- fieldId
type: object
type: array
explore:
properties:
joinedTables:
items:
type: string
type: array
baseTable:
type: string
label:
type: string
name:
type: string
required:
- joinedTables
- baseTable
- label
- name
type: object
status:
type: string
enum:
- resolved
nullable: false
required:
- rationale
- fields
- explore
- status
type: object
- properties:
suggestedQuestion:
type: string
candidates:
items:
properties:
reason:
type: string
exploreLabel:
type: string
exploreName:
type: string
required:
- reason
- exploreLabel
- exploreName
type: object
type: array
status:
type: string
enum:
- ambiguous
nullable: false
required:
- suggestedQuestion
- candidates
- status
type: object
- properties:
reason:
type: string
status:
type: string
enum:
- no_match
nullable: false
required:
- reason
- status
type: object
status:
type: string
enum:
- success
nullable: false
required:
- discovery
- status
type: object
- properties:
versionUuids:
properties:
after:
type: string
nullable: true
before:
type: string
nullable: true
required:
- after
- before
type: object
warnings:
items:
type: string
type: array
href:
type: string
uuid:
type: string
name:
type: string
slug:
type: string
status:
type: string
enum:
- success
nullable: false
required:
- versionUuids
- warnings
- href
- uuid
- name
- slug
- status
type: object
- properties:
steps:
items:
properties:
label:
type: string
kind:
type: string
enum:
- read
- edit
- search
- compile
- stage
required:
- label
- kind
type: object
type: array
nullable: true
previewUrl:
type: string
nullable: true
deletions:
type: number
format: double
nullable: true
additions:
type: number
format: double
nullable: true
commitSha:
type: string
nullable: true
prAction:
type: string
enum:
- opened
- updated
- null
nullable: true
status:
type: string
enum:
- success
nullable: false
prUrl:
type: string
nullable: true
required:
- status
- prUrl
type: object
- properties:
errorCode:
type: string
enum:
- unknown
- github_not_installed
- gitlab_not_installed
- unsupported_source_control
- pull_request_not_open
- null
nullable: true
status:
type: string
enum:
- error
nullable: false
required:
- status
type: object
- properties:
href:
type: string
name:
type: string
slug:
type: string
status:
type: string
enum:
- success
nullable: false
required:
- href
- name
- slug
- status
type: object
- properties:
status:
type: string
enum:
- error
- rejected
- success
- timeout
required:
- status
type: object
- properties:
ranking:
properties:
fields:
items:
properties:
chartUsage:
type: number
format: double
nullable: true
searchRank:
type: number
format: double
nullable: true
fieldType:
type: string
tableName:
type: string
label:
type: string
name:
type: string
required:
- fieldType
- tableName
- label
- name
type: object
type: array
type:
type: string
enum:
- dimension
- metric
- null
nullable: true
searchQuery:
type: string
nullable: true
required:
- fields
- type
- searchQuery
type: object
status:
type: string
enum:
- error
- success
required:
- status
type: object
toolName:
$ref: '#/components/schemas/Exclude_ToolName.proposeChange_'
toolType:
type: string
enum:
- built-in
nullable: false
required:
- metadata
- toolName
- toolType
type: object
- properties:
metadata:
allOf:
- $ref: '#/components/schemas/Record_string.unknown_'
nullable: true
toolName:
$ref: '#/components/schemas/AiAgentMcpToolName'
toolType:
type: string
enum:
- mcp
nullable: false
required:
- metadata
- toolName
- toolType
type: object
AiAgentReasoning:
properties:
createdAt:
type: string
format: date-time
text:
type: string
reasoningId:
type: string
promptUuid:
type: string
uuid:
type: string
required:
- createdAt
- text
- reasoningId
- promptUuid
- uuid
type: object
Pick_AiArtifact.artifactUuid-or-versionNumber-or-versionUuid-or-title-or-description-or-artifactType_:
properties:
description:
type: string
nullable: true
artifactUuid:
type: string
versionNumber:
type: number
format: double
versionUuid:
type: string
title:
type: string
nullable: true
artifactType:
type: string
enum:
- dashboard
- chart
required:
- description
- artifactUuid
- versionNumber
- versionUuid
- title
- artifactType
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentMessageAssistantArtifact:
$ref: '#/components/schemas/Pick_AiArtifact.artifactUuid-or-versionNumber-or-versionUuid-or-title-or-description-or-artifactType_'
AiPromptTokenUsage:
properties:
totalTokens:
type: number
format: double
required:
- totalTokens
type: object
AiAgentMessageAssistant:
properties:
tokenUsage:
allOf:
- $ref: '#/components/schemas/AiPromptTokenUsage'
nullable: true
modelConfig:
properties:
reasoning:
type: boolean
modelProvider:
type: string
modelName:
type: string
required:
- modelProvider
- modelName
type: object
nullable: true
referencedArtifacts:
items:
$ref: '#/components/schemas/AiAgentMessageAssistantArtifact'
type: array
nullable: true
artifacts:
items:
$ref: '#/components/schemas/AiAgentMessageAssistantArtifact'
type: array
nullable: true
savedQueryUuid:
type: string
nullable: true
reasoning:
items:
$ref: '#/components/schemas/AiAgentReasoning'
type: array
toolResults:
items:
$ref: '#/components/schemas/AiAgentToolResult'
type: array
toolCalls:
items:
$ref: '#/components/schemas/AiAgentToolCall'
type: array
humanFeedback:
type: string
nullable: true
humanScore:
type: number
format: double
nullable: true
createdAt:
type: string
errorMessage:
type: string
nullable: true
message:
type: string
nullable: true
threadUuid:
type: string
uuid:
type: string
status:
type: string
enum:
- idle
- pending
- error
role:
type: string
enum:
- assistant
nullable: false
required:
- tokenUsage
- modelConfig
- referencedArtifacts
- artifacts
- savedQueryUuid
- reasoning
- toolResults
- toolCalls
- humanScore
- createdAt
- errorMessage
- message
- threadUuid
- uuid
- status
- role
type: object
AiAgentMessage_AiAgentUser_:
anyOf:
- $ref: '#/components/schemas/AiAgentMessageUser_AiAgentUser_'
- $ref: '#/components/schemas/AiAgentMessageAssistant'
AiThreadCompaction:
properties:
createdAt:
type: string
triggeringPromptUuid:
type: string
compactedThroughPromptUuid:
type: string
threadUuid:
type: string
uuid:
type: string
required:
- createdAt
- triggeringPromptUuid
- compactedThroughPromptUuid
- threadUuid
- uuid
type: object
AiAgentThread:
allOf:
- $ref: '#/components/schemas/AiAgentThreadSummary_AiAgentUser_'
- properties:
compactions:
items:
$ref: '#/components/schemas/AiThreadCompaction'
type: array
messages:
items:
$ref: '#/components/schemas/AiAgentMessage_AiAgentUser_'
type: array
required:
- compactions
- messages
type: object
ApiAiAgentThreadResponse:
properties:
results:
$ref: '#/components/schemas/AiAgentThread'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiAgentThreadPullRequest:
properties:
commitSha:
type: string
nullable: true
changedFiles:
type: number
format: double
nullable: true
deletions:
type: number
format: double
nullable: true
additions:
type: number
format: double
nullable: true
state:
type: string
enum:
- open
- merged
- closed
- null
nullable: true
summary:
type: string
nullable: true
title:
type: string
nullable: true
prNumber:
type: number
format: double
nullable: true
repo:
type: string
nullable: true
prUrl:
type: string
required:
- commitSha
- changedFiles
- deletions
- additions
- state
- summary
- title
- prNumber
- repo
- prUrl
type: object
description: 'Overview of the writeback PR a thread is associated with — either
the PR the
agent opened in this thread, or the PR a remediation verification thread is
verifying. Live GitHub fields (state, counts) are null when the fetch fails;
`summary` falls back to the PR title when no stored summary exists.'
ApiSuccess_AiAgentThreadPullRequest-or-null_:
properties:
results:
allOf:
- $ref: '#/components/schemas/AiAgentThreadPullRequest'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentThreadPullRequestResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentThreadPullRequest-or-null_'
ApiSuccess_AiAgentThreadSummary_:
properties:
results:
$ref: '#/components/schemas/AiAgentThreadSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentThreadCreateResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentThreadSummary_'
AiPromptContextItemInput:
anyOf:
- properties:
runtimeOverrides:
$ref: '#/components/schemas/AiChartRuntimeOverrides'
chartSlug:
type: string
nullable: true
chartUuid:
type: string
type:
type: string
enum:
- chart
nullable: false
required:
- chartUuid
- type
type: object
- properties:
dashboardSlug:
type: string
nullable: true
dashboardUuid:
type: string
type:
type: string
enum:
- dashboard
nullable: false
required:
- dashboardUuid
- type
type: object
- properties:
promptUuid:
type: string
nullable: true
threadUuid:
type: string
type:
type: string
enum:
- thread
nullable: false
required:
- threadUuid
- type
type: object
AiPromptContextInput:
items:
$ref: '#/components/schemas/AiPromptContextItemInput'
type: array
ApiAiAgentThreadCreateRequest:
properties:
modelConfig:
properties:
reasoning:
type: boolean
modelProvider:
type: string
modelName:
type: string
required:
- modelProvider
- modelName
type: object
context:
$ref: '#/components/schemas/AiPromptContextInput'
prompt:
type: string
type: object
ApiSuccess_AiAgentMessageUser_AiAgentUser__:
properties:
results:
$ref: '#/components/schemas/AiAgentMessageUser_AiAgentUser_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentThreadMessageCreateResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentMessageUser_AiAgentUser__'
ApiAiAgentThreadMessageCreateRequest:
properties:
modelConfig:
properties:
reasoning:
type: boolean
modelProvider:
type: string
modelName:
type: string
required:
- modelProvider
- modelName
type: object
context:
$ref: '#/components/schemas/AiPromptContextInput'
prompt:
type: string
required:
- prompt
type: object
ApiSuccess__decision-approved-or-rejected__:
properties:
results:
properties:
decision:
type: string
enum:
- approved
- rejected
required:
- decision
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentSqlApprovalResponse:
$ref: '#/components/schemas/ApiSuccess__decision-approved-or-rejected__'
ApiAiAgentSqlApprovalRequest:
properties:
decision:
type: string
enum:
- approved
- rejected
required:
- decision
type: object
ApiAiAgentThreadStreamRequest:
properties:
toolHints:
items:
type: string
type: array
description: 'Tool names hinted by the user when they composed the message
(via
suggestion chips that carry a tool id). agentV2 appends a soft hint
to the user message before sending it to the LLM. Transient — never
persisted.'
enableSqlMode:
type: boolean
description: 'Per-thread toggle that decides whether the agent gets access
to the
runSql / listWarehouseTables / describeWarehouseTable tools for this
stream. Frontend tracks the toggle in its slice; passed in on every
stream call. Falls back to `false` when omitted (e.g. older clients,
API callers) so the safer "semantic layer only" mode is the default.'
type: object
ApiAiAgentThreadGenerateResponse:
properties:
results:
properties:
response:
type: string
required:
- response
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentThreadGenerateTitleResponse:
properties:
results:
properties:
title:
type: string
required:
- title
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCloneThreadResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentThreadSummary_'
AiAgentExploreAccessSummary:
properties:
metrics:
items:
type: string
type: array
dimensions:
items:
type: string
type: array
joinedTables:
items:
type: string
type: array
exploreName:
type: string
required:
- metrics
- dimensions
- joinedTables
- exploreName
type: object
ApiSuccess_AiAgentExploreAccessSummary-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentExploreAccessSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentExploreAccessSummaryResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentExploreAccessSummary-Array_'
Pick_AiArtifact.Exclude_keyofAiArtifact.chartConfig-or-dashboardConfig__:
properties:
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
artifactUuid:
type: string
versionNumber:
type: number
format: double
versionUuid:
type: string
title:
type: string
nullable: true
artifactType:
type: string
enum:
- dashboard
- chart
threadUuid:
type: string
promptUuid:
type: string
nullable: true
savedQueryUuid:
type: string
nullable: true
savedDashboardUuid:
type: string
nullable: true
versionCreatedAt:
type: string
format: date-time
verifiedByUserUuid:
type: string
nullable: true
verifiedAt:
type: string
format: date-time
nullable: true
required:
- description
- createdAt
- artifactUuid
- versionNumber
- versionUuid
- title
- artifactType
- threadUuid
- promptUuid
- savedQueryUuid
- savedDashboardUuid
- versionCreatedAt
- verifiedByUserUuid
- verifiedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_AiArtifact.chartConfig-or-dashboardConfig_:
$ref: '#/components/schemas/Pick_AiArtifact.Exclude_keyofAiArtifact.chartConfig-or-dashboardConfig__'
description: Construct a type with the properties of T except for those in type
K.
AiArtifactTSOACompat:
allOf:
- $ref: '#/components/schemas/Omit_AiArtifact.chartConfig-or-dashboardConfig_'
- properties:
dashboardConfig:
allOf:
- $ref: '#/components/schemas/Record_string.unknown_'
nullable: true
chartConfig:
allOf:
- $ref: '#/components/schemas/Record_string.unknown_'
nullable: true
required:
- dashboardConfig
- chartConfig
type: object
ApiSuccess_AiArtifactTSOACompat_:
properties:
results:
$ref: '#/components/schemas/AiArtifactTSOACompat'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentArtifactResponseTSOACompat:
$ref: '#/components/schemas/ApiSuccess_AiArtifactTSOACompat_'
AiResultType:
enum:
- time_series_chart
- vertical_bar_chart
- table
- query_result
- dashboard
- dashboard_v2
- improve_context
- propose_change
type: string
QueryWarning:
properties:
tables:
items:
type: string
type: array
fields:
items:
type: string
type: array
message:
type: string
required:
- message
type: object
ApiExecuteAsyncMetricQueryResults:
allOf:
- $ref: '#/components/schemas/ApiExecuteAsyncQueryResultsCommon'
- properties:
warnings:
items:
$ref: '#/components/schemas/QueryWarning'
type: array
fields:
$ref: '#/components/schemas/ItemsMap'
metricQuery:
$ref: '#/components/schemas/MetricQuery'
required:
- warnings
- fields
- metricQuery
type: object
AiVizMetadata:
properties:
description:
type: string
nullable: true
title:
type: string
nullable: true
required:
- description
- title
type: object
ApiAiAgentThreadMessageVizQuery:
properties:
metadata:
$ref: '#/components/schemas/AiVizMetadata'
query:
$ref: '#/components/schemas/ApiExecuteAsyncMetricQueryResults'
type:
$ref: '#/components/schemas/AiResultType'
required:
- metadata
- query
- type
type: object
ApiAiAgentThreadMessageVizQueryResponse:
properties:
results:
$ref: '#/components/schemas/ApiAiAgentThreadMessageVizQuery'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AiAgentThreadShare:
properties:
shareUrl:
type: string
revokedAt:
type: string
nullable: true
createdAt:
type: string
createdByUserUuid:
type: string
snapshotPromptUuid:
type: string
organizationUuid:
type: string
projectUuid:
type: string
agentUuid:
type: string
threadUuid:
type: string
nanoid:
type: string
uuid:
type: string
required:
- shareUrl
- revokedAt
- createdAt
- createdByUserUuid
- snapshotPromptUuid
- organizationUuid
- projectUuid
- agentUuid
- threadUuid
- nanoid
- uuid
type: object
ApiSuccess_AiAgentThreadShare_:
properties:
results:
$ref: '#/components/schemas/AiAgentThreadShare'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentThreadShareResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentThreadShare_'
ApiCloneAiAgentThreadShareResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentThreadSummary_'
Pick_AiAgentEvaluation.evalUuid_:
properties:
evalUuid:
type: string
required:
- evalUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiSuccess_Pick_AiAgentEvaluation.evalUuid__:
properties:
results:
$ref: '#/components/schemas/Pick_AiAgentEvaluation.evalUuid_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateEvaluationResponse:
$ref: '#/components/schemas/ApiSuccess_Pick_AiAgentEvaluation.evalUuid__'
CreateEvaluationPrompt:
anyOf:
- properties:
expectedResponse:
type: string
nullable: true
prompt:
type: string
required:
- expectedResponse
- prompt
type: object
- properties:
expectedResponse:
type: string
nullable: true
threadUuid:
type: string
promptUuid:
type: string
required:
- expectedResponse
- threadUuid
- promptUuid
type: object
description: 'Represents a prompt for evaluation that can be either:
- An object with a prompt string for new prompts
- An object referencing an existing prompt and thread by their UUIDs'
ApiCreateEvaluationRequest:
properties:
prompts:
items:
$ref: '#/components/schemas/CreateEvaluationPrompt'
type: array
description:
type: string
title:
type: string
required:
- prompts
- title
type: object
AiAgentEvaluationRunSummary:
properties:
failedAssessments:
type: number
format: double
passedAssessments:
type: number
format: double
createdAt:
type: string
format: date-time
completedAt:
type: string
format: date-time
nullable: true
status:
type: string
enum:
- pending
- running
- completed
- failed
evalUuid:
type: string
runUuid:
type: string
required:
- failedAssessments
- passedAssessments
- createdAt
- completedAt
- status
- evalUuid
- runUuid
type: object
ApiSuccess_AiAgentEvaluationRunSummary_:
properties:
results:
$ref: '#/components/schemas/AiAgentEvaluationRunSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentEvaluationRunResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentEvaluationRunSummary_'
Pick_AiAgentEvaluation.evalUuid-or-agentUuid-or-title-or-description-or-createdAt-or-updatedAt_:
properties:
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
title:
type: string
evalUuid:
type: string
agentUuid:
type: string
required:
- description
- createdAt
- updatedAt
- title
- evalUuid
- agentUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentEvaluationSummary:
$ref: '#/components/schemas/Pick_AiAgentEvaluation.evalUuid-or-agentUuid-or-title-or-description-or-createdAt-or-updatedAt_'
ApiSuccess_AiAgentEvaluationSummary-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentEvaluationSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentEvaluationSummaryListResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentEvaluationSummary-Array_'
AiAgentEvaluationPrompt:
allOf:
- properties:
createdAt:
type: string
format: date-time
evalPromptUuid:
type: string
required:
- createdAt
- evalPromptUuid
type: object
- anyOf:
- properties:
expectedResponse:
type: string
nullable: true
prompt:
type: string
type:
type: string
enum:
- string
nullable: false
required:
- expectedResponse
- prompt
- type
type: object
- properties:
expectedResponse:
type: string
nullable: true
threadUuid:
type: string
promptUuid:
type: string
type:
type: string
enum:
- thread
nullable: false
required:
- expectedResponse
- threadUuid
- promptUuid
- type
type: object
AiAgentEvaluation:
properties:
prompts:
items:
$ref: '#/components/schemas/AiAgentEvaluationPrompt'
type: array
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
description:
type: string
nullable: true
title:
type: string
agentUuid:
type: string
evalUuid:
type: string
required:
- prompts
- updatedAt
- createdAt
- description
- title
- agentUuid
- evalUuid
type: object
ApiSuccess_AiAgentEvaluation_:
properties:
results:
$ref: '#/components/schemas/AiAgentEvaluation'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentEvaluationResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentEvaluation_'
KnexPaginatedData__runs-AiAgentEvaluationRunSummary-Array__:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
properties:
runs:
items:
$ref: '#/components/schemas/AiAgentEvaluationRunSummary'
type: array
required:
- runs
type: object
required:
- data
type: object
ApiSuccess_KnexPaginatedData__runs-AiAgentEvaluationRunSummary-Array___:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData__runs-AiAgentEvaluationRunSummary-Array__'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentEvaluationRunSummaryListResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData__runs-AiAgentEvaluationRunSummary-Array___'
AssessmentType:
type: string
enum:
- human
- llm
AiEvalRunResultAssessment:
properties:
createdAt:
type: string
format: date-time
assessedAt:
type: string
format: date-time
llmJudgeModel:
type: string
nullable: true
llmJudgeProvider:
type: string
nullable: true
assessedByUserUuid:
type: string
nullable: true
reason:
type: string
nullable: true
passed:
type: boolean
assessmentType:
$ref: '#/components/schemas/AssessmentType'
runResultUuid:
type: string
assessmentUuid:
type: string
required:
- createdAt
- assessedAt
- llmJudgeModel
- llmJudgeProvider
- assessedByUserUuid
- reason
- passed
- assessmentType
- runResultUuid
- assessmentUuid
type: object
AiAgentEvaluationRunResult:
properties:
expectedResponse:
type: string
nullable: true
prompt:
type: string
nullable: true
assessment:
allOf:
- $ref: '#/components/schemas/AiEvalRunResultAssessment'
nullable: true
createdAt:
type: string
format: date-time
completedAt:
type: string
format: date-time
nullable: true
errorMessage:
type: string
nullable: true
status:
type: string
enum:
- pending
- running
- completed
- assessing
- failed
threadUuid:
type: string
nullable: true
evalPromptUuid:
type: string
nullable: true
resultUuid:
type: string
required:
- expectedResponse
- prompt
- assessment
- createdAt
- completedAt
- errorMessage
- status
- threadUuid
- evalPromptUuid
- resultUuid
type: object
AiAgentEvaluationRun:
allOf:
- $ref: '#/components/schemas/AiAgentEvaluationRunSummary'
- properties:
results:
items:
$ref: '#/components/schemas/AiAgentEvaluationRunResult'
type: array
required:
- results
type: object
ApiSuccess_AiAgentEvaluationRun_:
properties:
results:
$ref: '#/components/schemas/AiAgentEvaluationRun'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentEvaluationRunResultsResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentEvaluationRun_'
ApiUpdateEvaluationRequest:
properties:
prompts:
items:
$ref: '#/components/schemas/CreateEvaluationPrompt'
type: array
description:
type: string
title:
type: string
type: object
ApiAppendEvaluationRequest:
properties:
prompts:
items:
$ref: '#/components/schemas/CreateEvaluationPrompt'
type: array
required:
- prompts
type: object
ApiSuccess__updatedInstruction-string__:
properties:
results:
properties:
updatedInstruction:
type: string
required:
- updatedInstruction
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAppendInstructionResponse:
$ref: '#/components/schemas/ApiSuccess__updatedInstruction-string__'
ApiAppendInstructionRequest:
properties:
instruction:
type: string
required:
- instruction
type: object
ApiRevertChangeResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
ApiRevertChangeRequest:
properties:
changeUuid:
type: string
required:
- changeUuid
type: object
PreAggregateDailyStatResult:
properties:
updatedAt:
type: string
preAggregateName:
type: string
nullable: true
missReason:
type: string
nullable: true
missCount:
type: number
format: double
hitCount:
type: number
format: double
queryContext:
type: string
dashboardName:
type: string
nullable: true
dashboardUuid:
type: string
nullable: true
chartName:
type: string
nullable: true
chartUuid:
type: string
nullable: true
date:
type: string
exploreName:
type: string
required:
- updatedAt
- preAggregateName
- missReason
- missCount
- hitCount
- queryContext
- dashboardName
- dashboardUuid
- chartName
- chartUuid
- date
- exploreName
type: object
ApiPreAggregateStatsResults:
properties:
stats:
items:
$ref: '#/components/schemas/PreAggregateDailyStatResult'
type: array
required:
- stats
type: object
KnexPaginatedData_ApiPreAggregateStatsResults_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
$ref: '#/components/schemas/ApiPreAggregateStatsResults'
required:
- data
type: object
ApiGetPreAggregateStatsResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_ApiPreAggregateStatsResults_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
TilePreAggregateAuditHit:
properties:
preAggregateName:
type: string
exploreName:
type: string
savedChartUuid:
type: string
tileType:
$ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
tileName:
type: string
tileUuid:
type: string
status:
type: string
enum:
- hit
nullable: false
required:
- preAggregateName
- exploreName
- savedChartUuid
- tileType
- tileName
- tileUuid
- status
type: object
TilePreAggregateAuditMiss:
properties:
missFieldLabel:
type: string
nullable: true
miss:
$ref: '#/components/schemas/PreAggregateMatchMiss'
exploreName:
type: string
savedChartUuid:
type: string
tileType:
$ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
tileName:
type: string
tileUuid:
type: string
status:
type: string
enum:
- miss
nullable: false
required:
- missFieldLabel
- miss
- exploreName
- savedChartUuid
- tileType
- tileName
- tileUuid
- status
type: object
TileIneligibleReason:
enum:
- non_chart_tile
- sql_chart
- orphaned_chart
- explore_resolution_error
type: string
TilePreAggregateAuditIneligible:
properties:
ineligibleReason:
$ref: '#/components/schemas/TileIneligibleReason'
tileType:
$ref: '#/components/schemas/DashboardTileTypes'
tileName:
type: string
tileUuid:
type: string
status:
type: string
enum:
- ineligible
nullable: false
required:
- ineligibleReason
- tileType
- tileName
- tileUuid
- status
type: object
TilePreAggregateAuditStatus:
anyOf:
- $ref: '#/components/schemas/TilePreAggregateAuditHit'
- $ref: '#/components/schemas/TilePreAggregateAuditMiss'
- $ref: '#/components/schemas/TilePreAggregateAuditIneligible'
TabAuditGroup:
properties:
tiles:
items:
$ref: '#/components/schemas/TilePreAggregateAuditStatus'
type: array
tabName:
type: string
nullable: true
tabUuid:
type: string
nullable: true
required:
- tiles
- tabName
- tabUuid
type: object
DashboardPreAggregateAuditSummary:
properties:
ineligibleCount:
type: number
format: double
missCount:
type: number
format: double
hitCount:
type: number
format: double
required:
- ineligibleCount
- missCount
- hitCount
type: object
DashboardPreAggregateAudit:
properties:
summary:
$ref: '#/components/schemas/DashboardPreAggregateAuditSummary'
tabs:
items:
$ref: '#/components/schemas/TabAuditGroup'
type: array
dashboardName:
type: string
dashboardSlug:
type: string
dashboardUuid:
type: string
required:
- summary
- tabs
- dashboardName
- dashboardSlug
- dashboardUuid
type: object
ApiGetDashboardPreAggregateAuditResponse:
properties:
results:
$ref: '#/components/schemas/DashboardPreAggregateAudit'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRunDashboardPreAggregateAuditBody:
properties:
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
type: object
PreAggregateMaterializationWarning:
anyOf:
- properties:
threshold:
type: number
format: double
rowCount:
type: number
format: double
message:
type: string
type:
type: string
enum:
- row_count_exceeded
nullable: false
required:
- threshold
- rowCount
- message
- type
type: object
- properties:
maxRows:
type: number
format: double
message:
type: string
type:
type: string
enum:
- max_rows_applied
nullable: false
required:
- maxRows
- message
- type
type: object
PreAggregateMaterializationStatus:
type: string
enum:
- in_progress
- active
- superseded
- failed
ResultColumn:
properties:
type:
$ref: '#/components/schemas/DimensionType'
reference:
type: string
required:
- type
- reference
type: object
Record_string.ResultColumn_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/ResultColumn'
type: object
description: Construct a type with a set of properties K of type T
ResultColumns:
$ref: '#/components/schemas/Record_string.ResultColumn_'
PreAggregateMaterializationTrigger:
type: string
enum:
- compile
- cron
- manual
- webhook
PreAggregateMaterializationSummary:
properties:
materialization:
properties:
trigger:
$ref: '#/components/schemas/PreAggregateMaterializationTrigger'
errorMessage:
type: string
nullable: true
totalBytes:
type: number
format: double
nullable: true
columns:
allOf:
- $ref: '#/components/schemas/ResultColumns'
nullable: true
rowCount:
type: number
format: double
nullable: true
durationMs:
type: number
format: double
nullable: true
materializedAt:
type: string
format: date-time
nullable: true
status:
$ref: '#/components/schemas/PreAggregateMaterializationStatus'
materializationUuid:
type: string
required:
- trigger
- errorMessage
- totalBytes
- columns
- rowCount
- durationMs
- materializedAt
- status
- materializationUuid
type: object
nullable: true
warnings:
items:
$ref: '#/components/schemas/PreAggregateMaterializationWarning'
type: array
resolvedMaxRows:
type: number
format: double
nullable: true
definitionError:
type: string
nullable: true
refreshCron:
type: string
nullable: true
granularity:
allOf:
- $ref: '#/components/schemas/TimeFrames'
nullable: true
timeDimension:
type: string
nullable: true
filters:
items:
$ref: '#/components/schemas/MetricFilterRule'
type: array
metrics:
items:
type: string
type: array
dimensions:
items:
type: string
type: array
materializationRole:
allOf:
- $ref: '#/components/schemas/PreAggregateMaterializationRole'
nullable: true
sourceExploreName:
type: string
preAggExploreName:
type: string
preAggregateName:
type: string
preAggregateDefinitionUuid:
type: string
required:
- materialization
- warnings
- resolvedMaxRows
- definitionError
- refreshCron
- granularity
- timeDimension
- filters
- metrics
- dimensions
- materializationRole
- sourceExploreName
- preAggExploreName
- preAggregateName
- preAggregateDefinitionUuid
type: object
ApiPreAggregateMaterializationsResults:
properties:
materializations:
items:
$ref: '#/components/schemas/PreAggregateMaterializationSummary'
type: array
required:
- materializations
type: object
KnexPaginatedData_ApiPreAggregateMaterializationsResults_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
$ref: '#/components/schemas/ApiPreAggregateMaterializationsResults'
required:
- data
type: object
ApiGetPreAggregateMaterializationsResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_ApiPreAggregateMaterializationsResults_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
WarehouseTypes:
enum:
- bigquery
- postgres
- redshift
- snowflake
- databricks
- trino
- clickhouse
- athena
- duckdb
type: string
WarehouseTypes.SNOWFLAKE:
enum:
- snowflake
type: string
SnowflakeAuthenticationType:
enum:
- password
- private_key
- sso
- external_browser
- none
type: string
WeekDay:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
type: number
Pick_CreateSnowflakeCredentials.Exclude_keyofCreateSnowflakeCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.SNOWFLAKE'
account:
type: string
requireUserCredentials:
type: boolean
authenticationType:
$ref: '#/components/schemas/SnowflakeAuthenticationType'
role:
type: string
database:
type: string
warehouse:
type: string
schema:
type: string
threads:
type: number
format: double
clientSessionKeepAlive:
type: boolean
queryTag:
type: string
accessUrl:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
quotedIdentifiersIgnoreCase:
type: boolean
disableTimestampConversion:
type: boolean
timeoutSeconds:
type: number
format: double
override:
type: boolean
organizationWarehouseCredentialsUuid:
type: string
required:
- type
- account
- database
- warehouse
- schema
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateSnowflakeCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateSnowflakeCredentials.Exclude_keyofCreateSnowflakeCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
SnowflakeCredentials:
$ref: '#/components/schemas/Omit_CreateSnowflakeCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.REDSHIFT:
enum:
- redshift
type: string
Pick_CreateRedshiftCredentials.Exclude_keyofCreateRedshiftCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.REDSHIFT'
requireUserCredentials:
type: boolean
schema:
type: string
threads:
type: number
format: double
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
timeoutSeconds:
type: number
format: double
useSshTunnel:
type: boolean
sshTunnelHost:
type: string
sshTunnelPort:
type: number
format: double
sshTunnelUser:
type: string
sshTunnelPublicKey:
type: string
host:
type: string
port:
type: number
format: double
dbname:
type: string
keepalivesIdle:
type: number
format: double
sslmode:
type: string
ra3Node:
type: boolean
required:
- type
- schema
- host
- port
- dbname
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateRedshiftCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateRedshiftCredentials.Exclude_keyofCreateRedshiftCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
RedshiftCredentials:
$ref: '#/components/schemas/Omit_CreateRedshiftCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.POSTGRES:
enum:
- postgres
type: string
Pick_CreatePostgresCredentials.Exclude_keyofCreatePostgresCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.POSTGRES'
requireUserCredentials:
type: boolean
role:
type: string
schema:
type: string
threads:
type: number
format: double
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
timeoutSeconds:
type: number
format: double
useSshTunnel:
type: boolean
sshTunnelHost:
type: string
sshTunnelPort:
type: number
format: double
sshTunnelUser:
type: string
sshTunnelPublicKey:
type: string
host:
type: string
port:
type: number
format: double
dbname:
type: string
keepalivesIdle:
type: number
format: double
sslmode:
type: string
sslcertFileName:
type: string
sslkeyFileName:
type: string
sslrootcertFileName:
type: string
searchPath:
type: string
required:
- type
- schema
- host
- port
- dbname
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreatePostgresCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreatePostgresCredentials.Exclude_keyofCreatePostgresCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
PostgresCredentials:
$ref: '#/components/schemas/Omit_CreatePostgresCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.BIGQUERY:
enum:
- bigquery
type: string
BigqueryAuthenticationType:
enum:
- sso
- private_key
- adc
type: string
Pick_CreateBigqueryCredentials.Exclude_keyofCreateBigqueryCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.BIGQUERY'
requireUserCredentials:
type: boolean
authenticationType:
$ref: '#/components/schemas/BigqueryAuthenticationType'
threads:
type: number
format: double
accessUrl:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
timeoutSeconds:
type: number
format: double
project:
type: string
dataset:
type: string
priority:
type: string
enum:
- interactive
- batch
retries:
type: number
format: double
location:
type: string
maximumBytesBilled:
type: number
format: double
executionProject:
type: string
required:
- type
- project
- dataset
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateBigqueryCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateBigqueryCredentials.Exclude_keyofCreateBigqueryCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
BigqueryCredentials:
$ref: '#/components/schemas/Omit_CreateBigqueryCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.DATABRICKS:
enum:
- databricks
type: string
DatabricksAuthenticationType:
enum:
- personal_access_token
- oauth_m2m
- oauth_u2m
type: string
Pick_CreateDatabricksCredentials.Exclude_keyofCreateDatabricksCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DATABRICKS'
catalog:
type: string
requireUserCredentials:
type: boolean
authenticationType:
$ref: '#/components/schemas/DatabricksAuthenticationType'
database:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
serverHostName:
type: string
httpPath:
type: string
compute:
items:
properties:
httpPath:
type: string
name:
type: string
required:
- httpPath
- name
type: object
type: array
required:
- type
- database
- serverHostName
- httpPath
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDatabricksCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateDatabricksCredentials.Exclude_keyofCreateDatabricksCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
DatabricksCredentials:
$ref: '#/components/schemas/Omit_CreateDatabricksCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.TRINO:
enum:
- trino
type: string
Pick_CreateTrinoCredentials.Exclude_keyofCreateTrinoCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.TRINO'
requireUserCredentials:
type: boolean
schema:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
host:
type: string
port:
type: number
format: double
dbname:
type: string
http_scheme:
type: string
source:
type: string
required:
- type
- schema
- host
- port
- dbname
- http_scheme
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateTrinoCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateTrinoCredentials.Exclude_keyofCreateTrinoCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
TrinoCredentials:
$ref: '#/components/schemas/Omit_CreateTrinoCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.CLICKHOUSE:
enum:
- clickhouse
type: string
Pick_CreateClickhouseCredentials.Exclude_keyofCreateClickhouseCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.CLICKHOUSE'
requireUserCredentials:
type: boolean
schema:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
timeoutSeconds:
type: number
format: double
host:
type: string
port:
type: number
format: double
secure:
type: boolean
required:
- type
- schema
- host
- port
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateClickhouseCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateClickhouseCredentials.Exclude_keyofCreateClickhouseCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
ClickhouseCredentials:
$ref: '#/components/schemas/Omit_CreateClickhouseCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.ATHENA:
enum:
- athena
type: string
AthenaAuthenticationType:
enum:
- access_key
- iam_role
type: string
Pick_CreateAthenaCredentials.Exclude_keyofCreateAthenaCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.ATHENA'
requireUserCredentials:
type: boolean
authenticationType:
$ref: '#/components/schemas/AthenaAuthenticationType'
database:
type: string
schema:
type: string
threads:
type: number
format: double
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
region:
type: string
s3StagingDir:
type: string
s3DataDir:
type: string
assumeRoleArn:
type: string
assumeRoleExternalId:
type: string
workGroup:
type: string
numRetries:
type: number
format: double
required:
- type
- database
- schema
- region
- s3StagingDir
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateAthenaCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateAthenaCredentials.Exclude_keyofCreateAthenaCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
AthenaCredentials:
$ref: '#/components/schemas/Omit_CreateAthenaCredentials.SensitiveCredentialsFieldNames_'
WarehouseTypes.DUCKDB:
enum:
- duckdb
type: string
DuckdbConnectionType.MOTHERDUCK:
enum:
- motherduck
type: string
Pick_CreateDuckdbMotherduckCredentials.Exclude_keyofCreateDuckdbMotherduckCredentials.SensitiveCredentialsFieldNames__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
requireUserCredentials:
type: boolean
database:
type: string
schema:
type: string
threads:
type: number
format: double
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
connectionType:
$ref: '#/components/schemas/DuckdbConnectionType.MOTHERDUCK'
required:
- type
- database
- schema
- connectionType
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDuckdbMotherduckCredentials.SensitiveCredentialsFieldNames_:
$ref: '#/components/schemas/Pick_CreateDuckdbMotherduckCredentials.Exclude_keyofCreateDuckdbMotherduckCredentials.SensitiveCredentialsFieldNames__'
description: Construct a type with the properties of T except for those in type
K.
DuckdbMotherduckCredentials:
$ref: '#/components/schemas/Omit_CreateDuckdbMotherduckCredentials.SensitiveCredentialsFieldNames_'
DuckdbConnectionType.DUCKLAKE:
enum:
- ducklake
type: string
Pick_CreateDuckdbDucklakeCredentials.Exclude_keyofCreateDuckdbDucklakeCredentials.catalog-or-dataPath__:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
requireUserCredentials:
type: boolean
schema:
type: string
threads:
type: number
format: double
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
dataTimezone:
type: string
connectionType:
$ref: '#/components/schemas/DuckdbConnectionType.DUCKLAKE'
catalogAlias:
type: string
required:
- type
- schema
- connectionType
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDuckdbDucklakeCredentials.catalog-or-dataPath_:
$ref: '#/components/schemas/Pick_CreateDuckdbDucklakeCredentials.Exclude_keyofCreateDuckdbDucklakeCredentials.catalog-or-dataPath__'
description: Construct a type with the properties of T except for those in type
K.
DucklakeCatalogType.POSTGRES:
enum:
- postgres
type: string
Pick_CreateDucklakeCatalogPostgres.Exclude_keyofCreateDucklakeCatalogPostgres.user-or-password__:
properties:
type:
$ref: '#/components/schemas/DucklakeCatalogType.POSTGRES'
database:
type: string
host:
type: string
port:
type: number
format: double
required:
- type
- database
- host
- port
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDucklakeCatalogPostgres.user-or-password_:
$ref: '#/components/schemas/Pick_CreateDucklakeCatalogPostgres.Exclude_keyofCreateDucklakeCatalogPostgres.user-or-password__'
description: Construct a type with the properties of T except for those in type
K.
DucklakeCatalogPostgres:
$ref: '#/components/schemas/Omit_CreateDucklakeCatalogPostgres.user-or-password_'
DucklakeCatalogType.SQLITE:
enum:
- sqlite
type: string
CreateDucklakeCatalogSqlite:
properties:
path:
type: string
type:
$ref: '#/components/schemas/DucklakeCatalogType.SQLITE'
required:
- path
- type
type: object
DucklakeCatalogSqlite:
$ref: '#/components/schemas/CreateDucklakeCatalogSqlite'
DucklakeCatalogType.DUCKDB:
enum:
- duckdb
type: string
CreateDucklakeCatalogDuckdb:
properties:
path:
type: string
type:
$ref: '#/components/schemas/DucklakeCatalogType.DUCKDB'
required:
- path
- type
type: object
DucklakeCatalogDuckdb:
$ref: '#/components/schemas/CreateDucklakeCatalogDuckdb'
DucklakeCatalog:
anyOf:
- $ref: '#/components/schemas/DucklakeCatalogPostgres'
- $ref: '#/components/schemas/DucklakeCatalogSqlite'
- $ref: '#/components/schemas/DucklakeCatalogDuckdb'
DucklakeDataPathType.S3:
enum:
- s3
type: string
Pick_CreateDucklakeDataPathS3.Exclude_keyofCreateDucklakeDataPathS3.accessKeyId-or-secretAccessKey__:
properties:
type:
$ref: '#/components/schemas/DucklakeDataPathType.S3'
region:
type: string
url:
type: string
endpoint:
type: string
forcePathStyle:
type: boolean
useSsl:
type: boolean
required:
- type
- url
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDucklakeDataPathS3.accessKeyId-or-secretAccessKey_:
$ref: '#/components/schemas/Pick_CreateDucklakeDataPathS3.Exclude_keyofCreateDucklakeDataPathS3.accessKeyId-or-secretAccessKey__'
description: Construct a type with the properties of T except for those in type
K.
DucklakeDataPathS3:
$ref: '#/components/schemas/Omit_CreateDucklakeDataPathS3.accessKeyId-or-secretAccessKey_'
DucklakeDataPathType.GCS:
enum:
- gcs
type: string
Pick_CreateDucklakeDataPathGcs.Exclude_keyofCreateDucklakeDataPathGcs.hmacKeyId-or-hmacSecret__:
properties:
type:
$ref: '#/components/schemas/DucklakeDataPathType.GCS'
url:
type: string
required:
- type
- url
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDucklakeDataPathGcs.hmacKeyId-or-hmacSecret_:
$ref: '#/components/schemas/Pick_CreateDucklakeDataPathGcs.Exclude_keyofCreateDucklakeDataPathGcs.hmacKeyId-or-hmacSecret__'
description: Construct a type with the properties of T except for those in type
K.
DucklakeDataPathGcs:
$ref: '#/components/schemas/Omit_CreateDucklakeDataPathGcs.hmacKeyId-or-hmacSecret_'
DucklakeDataPathType.AZURE:
enum:
- azure
type: string
Pick_CreateDucklakeDataPathAzure.Exclude_keyofCreateDucklakeDataPathAzure.connectionString-or-accountKey__:
properties:
type:
$ref: '#/components/schemas/DucklakeDataPathType.AZURE'
url:
type: string
accountName:
type: string
required:
- type
- url
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateDucklakeDataPathAzure.connectionString-or-accountKey_:
$ref: '#/components/schemas/Pick_CreateDucklakeDataPathAzure.Exclude_keyofCreateDucklakeDataPathAzure.connectionString-or-accountKey__'
description: Construct a type with the properties of T except for those in type
K.
DucklakeDataPathAzure:
$ref: '#/components/schemas/Omit_CreateDucklakeDataPathAzure.connectionString-or-accountKey_'
DucklakeDataPathType.LOCAL:
enum:
- local
type: string
CreateDucklakeDataPathLocal:
properties:
path:
type: string
type:
$ref: '#/components/schemas/DucklakeDataPathType.LOCAL'
required:
- path
- type
type: object
DucklakeDataPathLocal:
$ref: '#/components/schemas/CreateDucklakeDataPathLocal'
DucklakeDataPath:
anyOf:
- $ref: '#/components/schemas/DucklakeDataPathS3'
- $ref: '#/components/schemas/DucklakeDataPathGcs'
- $ref: '#/components/schemas/DucklakeDataPathAzure'
- $ref: '#/components/schemas/DucklakeDataPathLocal'
DuckdbDucklakeCredentials:
allOf:
- $ref: '#/components/schemas/Omit_CreateDuckdbDucklakeCredentials.catalog-or-dataPath_'
- properties:
dataPath:
$ref: '#/components/schemas/DucklakeDataPath'
catalog:
$ref: '#/components/schemas/DucklakeCatalog'
required:
- dataPath
- catalog
type: object
DuckdbCredentials:
anyOf:
- $ref: '#/components/schemas/DuckdbMotherduckCredentials'
- $ref: '#/components/schemas/DuckdbDucklakeCredentials'
WarehouseCredentials:
anyOf:
- $ref: '#/components/schemas/SnowflakeCredentials'
- $ref: '#/components/schemas/RedshiftCredentials'
- $ref: '#/components/schemas/PostgresCredentials'
- $ref: '#/components/schemas/BigqueryCredentials'
- $ref: '#/components/schemas/DatabricksCredentials'
- $ref: '#/components/schemas/TrinoCredentials'
- $ref: '#/components/schemas/ClickhouseCredentials'
- $ref: '#/components/schemas/AthenaCredentials'
- $ref: '#/components/schemas/DuckdbCredentials'
OrganizationWarehouseCredentials:
properties:
credentials:
$ref: '#/components/schemas/WarehouseCredentials'
createdByUserUuid:
type: string
nullable: true
createdAt:
type: string
format: date-time
warehouseType:
$ref: '#/components/schemas/WarehouseTypes'
description:
type: string
nullable: true
name:
type: string
organizationUuid:
type: string
organizationWarehouseCredentialsUuid:
type: string
required:
- credentials
- createdByUserUuid
- createdAt
- warehouseType
- description
- name
- organizationUuid
- organizationWarehouseCredentialsUuid
type: object
description: Organization-level warehouse credentials
ApiOrganizationWarehouseCredentialsListResponse:
properties:
results:
items:
$ref: '#/components/schemas/OrganizationWarehouseCredentials'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_OrganizationWarehouseCredentials.organizationWarehouseCredentialsUuid-or-name-or-description-or-warehouseType_:
properties:
description:
type: string
nullable: true
name:
type: string
organizationWarehouseCredentialsUuid:
type: string
warehouseType:
$ref: '#/components/schemas/WarehouseTypes'
required:
- description
- name
- organizationWarehouseCredentialsUuid
- warehouseType
type: object
description: From T, pick a set of properties whose keys are in the union K
OrganizationWarehouseCredentialsSummary:
$ref: '#/components/schemas/Pick_OrganizationWarehouseCredentials.organizationWarehouseCredentialsUuid-or-name-or-description-or-warehouseType_'
ApiOrganizationWarehouseCredentialsSummaryListResponse:
properties:
results:
items:
$ref: '#/components/schemas/OrganizationWarehouseCredentialsSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiOrganizationWarehouseCredentialsResponse:
properties:
results:
$ref: '#/components/schemas/OrganizationWarehouseCredentials'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
SshTunnelConfiguration:
properties:
sshTunnelPrivateKey:
type: string
sshTunnelPublicKey:
type: string
sshTunnelUser:
type: string
sshTunnelPort:
type: number
format: double
sshTunnelHost:
type: string
useSshTunnel:
type: boolean
type: object
CreateRedshiftCredentials:
allOf:
- $ref: '#/components/schemas/SshTunnelConfiguration'
- properties:
timeoutSeconds:
type: number
format: double
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
ra3Node:
type: boolean
sslmode:
type: string
keepalivesIdle:
type: number
format: double
threads:
type: number
format: double
schema:
type: string
dbname:
type: string
port:
type: number
format: double
requireUserCredentials:
type: boolean
password:
type: string
user:
type: string
host:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.REDSHIFT'
required:
- schema
- dbname
- port
- password
- user
- host
- type
type: object
CreateBigqueryCredentials:
properties:
accessUrl:
type: string
executionProject:
type: string
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
maximumBytesBilled:
type: number
format: double
location:
type: string
retries:
type: number
format: double
requireUserCredentials:
type: boolean
keyfileContents:
$ref: '#/components/schemas/Record_string.string_'
authenticationType:
$ref: '#/components/schemas/BigqueryAuthenticationType'
priority:
type: string
enum:
- interactive
- batch
timeoutSeconds:
type: number
format: double
threads:
type: number
format: double
dataset:
type: string
project:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.BIGQUERY'
required:
- keyfileContents
- dataset
- project
- type
type: object
SslConfiguration:
properties:
sslrootcert:
type: string
nullable: true
sslrootcertFileName:
type: string
sslkey:
type: string
nullable: true
sslkeyFileName:
type: string
sslcert:
type: string
nullable: true
sslcertFileName:
type: string
sslmode:
type: string
type: object
CreatePostgresCredentials:
allOf:
- $ref: '#/components/schemas/SshTunnelConfiguration'
- $ref: '#/components/schemas/SslConfiguration'
- properties:
timeoutSeconds:
type: number
format: double
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
role:
type: string
searchPath:
type: string
keepalivesIdle:
type: number
format: double
threads:
type: number
format: double
schema:
type: string
dbname:
type: string
port:
type: number
format: double
requireUserCredentials:
type: boolean
password:
type: string
user:
type: string
host:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.POSTGRES'
required:
- schema
- dbname
- port
- password
- user
- host
- type
type: object
CreateSnowflakeCredentials:
properties:
organizationWarehouseCredentialsUuid:
type: string
override:
type: boolean
timeoutSeconds:
type: number
format: double
disableTimestampConversion:
type: boolean
quotedIdentifiersIgnoreCase:
type: boolean
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
accessUrl:
type: string
queryTag:
type: string
clientSessionKeepAlive:
type: boolean
threads:
type: number
format: double
schema:
type: string
warehouse:
type: string
database:
type: string
role:
type: string
token:
type: string
refreshToken:
type: string
authenticationType:
$ref: '#/components/schemas/SnowflakeAuthenticationType'
privateKeyPass:
type: string
privateKey:
type: string
requireUserCredentials:
type: boolean
password:
type: string
user:
type: string
account:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.SNOWFLAKE'
required:
- schema
- warehouse
- database
- user
- account
- type
type: object
CreateDatabricksCredentials:
properties:
compute:
items:
properties:
httpPath:
type: string
name:
type: string
required:
- httpPath
- name
type: object
type: array
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
requireUserCredentials:
type: boolean
oauthClientSecret:
type: string
oauthClientId:
type: string
token:
type: string
refreshToken:
type: string
personalAccessToken:
type: string
authenticationType:
$ref: '#/components/schemas/DatabricksAuthenticationType'
httpPath:
type: string
serverHostName:
type: string
database:
type: string
catalog:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.DATABRICKS'
required:
- httpPath
- serverHostName
- database
- type
type: object
CreateTrinoCredentials:
properties:
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
source:
type: string
http_scheme:
type: string
schema:
type: string
dbname:
type: string
port:
type: number
format: double
requireUserCredentials:
type: boolean
password:
type: string
user:
type: string
host:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.TRINO'
required:
- http_scheme
- schema
- dbname
- port
- password
- user
- host
- type
type: object
CreateClickhouseCredentials:
properties:
timeoutSeconds:
type: number
format: double
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
secure:
type: boolean
schema:
type: string
port:
type: number
format: double
requireUserCredentials:
type: boolean
password:
type: string
user:
type: string
host:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.CLICKHOUSE'
required:
- schema
- port
- password
- user
- host
- type
type: object
CreateAthenaCredentials:
properties:
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
requireUserCredentials:
type: boolean
numRetries:
type: number
format: double
threads:
type: number
format: double
workGroup:
type: string
assumeRoleExternalId:
type: string
assumeRoleArn:
type: string
secretAccessKey:
type: string
accessKeyId:
type: string
authenticationType:
$ref: '#/components/schemas/AthenaAuthenticationType'
s3DataDir:
type: string
s3StagingDir:
type: string
schema:
type: string
database:
type: string
region:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.ATHENA'
required:
- s3StagingDir
- schema
- database
- region
- type
type: object
CreateDuckdbMotherduckCredentials:
properties:
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
requireUserCredentials:
type: boolean
threads:
type: number
format: double
token:
type: string
schema:
type: string
database:
type: string
connectionType:
$ref: '#/components/schemas/DuckdbConnectionType.MOTHERDUCK'
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
required:
- token
- schema
- database
- connectionType
- type
type: object
CreateDucklakeCatalogPostgres:
properties:
password:
type: string
user:
type: string
database:
type: string
port:
type: number
format: double
host:
type: string
type:
$ref: '#/components/schemas/DucklakeCatalogType.POSTGRES'
required:
- password
- user
- database
- port
- host
- type
type: object
CreateDucklakeCatalog:
anyOf:
- $ref: '#/components/schemas/CreateDucklakeCatalogPostgres'
- $ref: '#/components/schemas/CreateDucklakeCatalogSqlite'
- $ref: '#/components/schemas/CreateDucklakeCatalogDuckdb'
CreateDucklakeDataPathS3:
properties:
useSsl:
type: boolean
forcePathStyle:
type: boolean
secretAccessKey:
type: string
accessKeyId:
type: string
region:
type: string
endpoint:
type: string
url:
type: string
type:
$ref: '#/components/schemas/DucklakeDataPathType.S3'
required:
- url
- type
type: object
CreateDucklakeDataPathGcs:
properties:
hmacSecret:
type: string
hmacKeyId:
type: string
url:
type: string
type:
$ref: '#/components/schemas/DucklakeDataPathType.GCS'
required:
- url
- type
type: object
CreateDucklakeDataPathAzure:
properties:
accountKey:
type: string
accountName:
type: string
connectionString:
type: string
url:
type: string
type:
$ref: '#/components/schemas/DucklakeDataPathType.AZURE'
required:
- url
- type
type: object
CreateDucklakeDataPath:
anyOf:
- $ref: '#/components/schemas/CreateDucklakeDataPathS3'
- $ref: '#/components/schemas/CreateDucklakeDataPathGcs'
- $ref: '#/components/schemas/CreateDucklakeDataPathAzure'
- $ref: '#/components/schemas/CreateDucklakeDataPathLocal'
CreateDuckdbDucklakeCredentials:
properties:
dataTimezone:
type: string
startOfWeek:
allOf:
- $ref: '#/components/schemas/WeekDay'
nullable: true
requireUserCredentials:
type: boolean
threads:
type: number
format: double
catalogAlias:
type: string
schema:
type: string
dataPath:
$ref: '#/components/schemas/CreateDucklakeDataPath'
catalog:
$ref: '#/components/schemas/CreateDucklakeCatalog'
connectionType:
$ref: '#/components/schemas/DuckdbConnectionType.DUCKLAKE'
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
required:
- schema
- dataPath
- catalog
- connectionType
- type
type: object
CreateDuckdbCredentials:
anyOf:
- $ref: '#/components/schemas/CreateDuckdbMotherduckCredentials'
- $ref: '#/components/schemas/CreateDuckdbDucklakeCredentials'
CreateWarehouseCredentials:
anyOf:
- $ref: '#/components/schemas/CreateRedshiftCredentials'
- $ref: '#/components/schemas/CreateBigqueryCredentials'
- $ref: '#/components/schemas/CreatePostgresCredentials'
- $ref: '#/components/schemas/CreateSnowflakeCredentials'
- $ref: '#/components/schemas/CreateDatabricksCredentials'
- $ref: '#/components/schemas/CreateTrinoCredentials'
- $ref: '#/components/schemas/CreateClickhouseCredentials'
- $ref: '#/components/schemas/CreateAthenaCredentials'
- $ref: '#/components/schemas/CreateDuckdbCredentials'
CreateOrganizationWarehouseCredentials:
properties:
credentials:
$ref: '#/components/schemas/CreateWarehouseCredentials'
description:
type: string
nullable: true
name:
type: string
required:
- credentials
- name
type: object
UpdateOrganizationWarehouseCredentials:
properties:
credentials:
$ref: '#/components/schemas/CreateWarehouseCredentials'
description:
type: string
nullable: true
name:
type: string
type: object
Pick_AzureAdSsoConfig.oauth2ClientId-or-oauth2TenantId_:
properties:
oauth2ClientId:
type: string
oauth2TenantId:
type: string
required:
- oauth2ClientId
- oauth2TenantId
type: object
description: From T, pick a set of properties whose keys are in the union K
OrganizationSsoMethodFlags:
properties:
allowPassword:
type: boolean
description: 'Controls whether email+password sign-in is shown alongside
this method
when it matches a user. When multiple matching SSO methods disagree,
lenient rule applies (ANY method that allows → show password).'
emailDomains:
items:
type: string
type: array
description: Strict whitelist (only consulted when `overrideEmailDomains`
is true).
overrideEmailDomains:
type: boolean
description: 'When true, the method''s own `emailDomains` list governs discovery.
When false, the org''s `allowed_email_domains` is used instead.'
enabled:
type: boolean
description: When false the method is hidden from precheck even if discovery
would match.
required:
- allowPassword
- emailDomains
- overrideEmailDomains
- enabled
type: object
description: 'Per-row flags shared by every SSO method configured at the org
level.
Stored as plain columns alongside the encrypted provider-specific config.'
AzureAdSsoConfigSummary:
allOf:
- $ref: '#/components/schemas/Pick_AzureAdSsoConfig.oauth2ClientId-or-oauth2TenantId_'
- $ref: '#/components/schemas/OrganizationSsoMethodFlags'
- properties:
hasClientSecret:
type: boolean
required:
- hasClientSecret
type: object
ApiAzureAdSsoConfigResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/AzureAdSsoConfigSummary'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpsertAzureAdSsoConfigResponse:
properties:
results:
$ref: '#/components/schemas/AzureAdSsoConfigSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Partial_OrganizationSsoMethodFlags_:
properties:
enabled:
type: boolean
description: When false the method is hidden from precheck even if discovery
would match.
overrideEmailDomains:
type: boolean
description: 'When true, the method''s own `emailDomains` list governs discovery.
When false, the org''s `allowed_email_domains` is used instead.'
emailDomains:
items:
type: string
type: array
description: Strict whitelist (only consulted when `overrideEmailDomains`
is true).
allowPassword:
type: boolean
description: 'Controls whether email+password sign-in is shown alongside
this method
when it matches a user. When multiple matching SSO methods disagree,
lenient rule applies (ANY method that allows → show password).'
type: object
description: Make all properties in T optional
UpsertAzureAdSsoConfig:
allOf:
- properties:
oauth2TenantId:
type: string
oauth2ClientSecret:
type: string
description: When omitted on update, the stored secret is preserved. Required
on create.
oauth2ClientId:
type: string
required:
- oauth2TenantId
- oauth2ClientId
type: object
- $ref: '#/components/schemas/Partial_OrganizationSsoMethodFlags_'
Pick_OktaSsoConfig.oauth2Issuer-or-oktaDomain-or-oauth2ClientId-or-authorizationServerId-or-extraScopes_:
properties:
oauth2ClientId:
type: string
oauth2Issuer:
type: string
oktaDomain:
type: string
authorizationServerId:
type: string
nullable: true
description: Optional custom authorization server (Okta API Access Management).
extraScopes:
type: string
nullable: true
description: Optional extra scopes (space-separated) appended to the auth
request.
required:
- oauth2ClientId
- oauth2Issuer
- oktaDomain
- authorizationServerId
- extraScopes
type: object
description: From T, pick a set of properties whose keys are in the union K
OktaSsoConfigSummary:
allOf:
- $ref: '#/components/schemas/Pick_OktaSsoConfig.oauth2Issuer-or-oktaDomain-or-oauth2ClientId-or-authorizationServerId-or-extraScopes_'
- $ref: '#/components/schemas/OrganizationSsoMethodFlags'
- properties:
hasClientSecret:
type: boolean
required:
- hasClientSecret
type: object
ApiOktaSsoConfigResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/OktaSsoConfigSummary'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpsertOktaSsoConfigResponse:
properties:
results:
$ref: '#/components/schemas/OktaSsoConfigSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpsertOktaSsoConfig:
allOf:
- properties:
extraScopes:
type: string
nullable: true
authorizationServerId:
type: string
nullable: true
oauth2ClientSecret:
type: string
description: When omitted on update, the stored secret is preserved. Required
on create.
oauth2ClientId:
type: string
oktaDomain:
type: string
oauth2Issuer:
type: string
required:
- oauth2ClientId
- oktaDomain
- oauth2Issuer
type: object
- $ref: '#/components/schemas/Partial_OrganizationSsoMethodFlags_'
Pick_GenericOidcSsoConfig.clientId-or-metadataDocumentEndpoint-or-scopes_:
properties:
clientId:
type: string
metadataDocumentEndpoint:
type: string
description: OIDC discovery document URL (`.well-known/openid-configuration`).
scopes:
type: string
nullable: true
description: Optional extra scopes (space-separated) appended to the auth
request.
required:
- clientId
- metadataDocumentEndpoint
- scopes
type: object
description: From T, pick a set of properties whose keys are in the union K
GenericOidcSsoConfigSummary:
allOf:
- $ref: '#/components/schemas/Pick_GenericOidcSsoConfig.clientId-or-metadataDocumentEndpoint-or-scopes_'
- $ref: '#/components/schemas/OrganizationSsoMethodFlags'
- properties:
hasClientSecret:
type: boolean
required:
- hasClientSecret
type: object
ApiGenericOidcSsoConfigResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/GenericOidcSsoConfigSummary'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpsertGenericOidcSsoConfigResponse:
properties:
results:
$ref: '#/components/schemas/GenericOidcSsoConfigSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpsertGenericOidcSsoConfig:
allOf:
- properties:
scopes:
type: string
nullable: true
metadataDocumentEndpoint:
type: string
clientSecret:
type: string
description: When omitted on update, the stored secret is preserved. Required
on create.
clientId:
type: string
required:
- metadataDocumentEndpoint
- clientId
type: object
- $ref: '#/components/schemas/Partial_OrganizationSsoMethodFlags_'
Pick_OneLoginSsoConfig.oauth2Issuer-or-oauth2ClientId_:
properties:
oauth2ClientId:
type: string
oauth2Issuer:
type: string
required:
- oauth2ClientId
- oauth2Issuer
type: object
description: From T, pick a set of properties whose keys are in the union K
OneLoginSsoConfigSummary:
allOf:
- $ref: '#/components/schemas/Pick_OneLoginSsoConfig.oauth2Issuer-or-oauth2ClientId_'
- $ref: '#/components/schemas/OrganizationSsoMethodFlags'
- properties:
hasClientSecret:
type: boolean
required:
- hasClientSecret
type: object
ApiOneLoginSsoConfigResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/OneLoginSsoConfigSummary'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpsertOneLoginSsoConfigResponse:
properties:
results:
$ref: '#/components/schemas/OneLoginSsoConfigSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpsertOneLoginSsoConfig:
allOf:
- properties:
oauth2ClientSecret:
type: string
description: When omitted on update, the stored secret is preserved. Required
on create.
oauth2ClientId:
type: string
oauth2Issuer:
type: string
required:
- oauth2ClientId
- oauth2Issuer
type: object
- $ref: '#/components/schemas/Partial_OrganizationSsoMethodFlags_'
GoogleSsoConfigSummary:
$ref: '#/components/schemas/OrganizationSsoMethodFlags'
ApiGoogleSsoConfigResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/GoogleSsoConfigSummary'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpsertGoogleSsoConfigResponse:
properties:
results:
$ref: '#/components/schemas/GoogleSsoConfigSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpsertGoogleSsoConfig:
$ref: '#/components/schemas/Partial_OrganizationSsoMethodFlags_'
VerifiedDomain:
properties:
verifiedByUserUuid:
type: string
nullable: true
verifiedAt:
type: string
format: date-time
domain:
type: string
organizationUuid:
type: string
required:
- verifiedByUserUuid
- verifiedAt
- domain
- organizationUuid
type: object
description: 'A domain an organization has proven it owns (via a one-time passcode
sent to
an address at the domain). Verified domains are globally unique — the first
organization to verify a domain owns it.'
ApiVerifiedDomainsResponse:
properties:
results:
items:
$ref: '#/components/schemas/VerifiedDomain'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
EmailOneTimePassword:
properties:
numberOfAttempts:
type: number
format: double
description: Number of times the passcode has been attempted
createdAt:
type: string
format: date-time
description: Time that the passcode was created
required:
- numberOfAttempts
- createdAt
type: object
Pick_EmailStatusExpiring.otp_:
properties:
otp:
allOf:
- $ref: '#/components/schemas/EmailOneTimePassword'
- properties:
isMaxAttempts:
type: boolean
isExpired:
type: boolean
expiresAt:
type: string
format: date-time
required:
- isMaxAttempts
- isExpired
- expiresAt
type: object
description: 'One time passcode information
If there is no active passcode, this will be undefined'
type: object
description: From T, pick a set of properties whose keys are in the union K
DomainVerificationStatus:
allOf:
- $ref: '#/components/schemas/Pick_EmailStatusExpiring.otp_'
- properties:
isVerified:
type: boolean
domain:
type: string
required:
- isVerified
- domain
type: object
description: 'Verification status of a single domain. Mirrors {@link EmailStatusExpiring}:
`otp` is present only while a pending one-time passcode challenge exists.'
ApiDomainVerificationStatusResponse:
properties:
results:
$ref: '#/components/schemas/DomainVerificationStatus'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
RequestDomainVerification:
properties:
challengeEmail:
type: string
domain:
type: string
required:
- challengeEmail
- domain
type: object
description: 'Request to verify a domain. `challengeEmail` must be an address
at `domain`;
a one-time passcode is sent there and confirmed via
{@link ConfirmDomainVerification}.'
ConfirmDomainVerification:
properties:
passcode:
type: string
domain:
type: string
required:
- passcode
- domain
type: object
Role:
properties:
updatedAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
nullable: true
createdBy:
type: string
nullable: true
ownerType:
type: string
enum:
- user
- system
organizationUuid:
type: string
nullable: true
description:
type: string
nullable: true
name:
type: string
roleUuid:
type: string
required:
- updatedAt
- createdAt
- createdBy
- ownerType
- organizationUuid
- description
- name
- roleUuid
type: object
ApiDefaultRoleResponse:
properties:
results:
$ref: '#/components/schemas/Role'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateRole:
properties:
scopes:
items:
type: string
type: array
description:
type: string
name:
type: string
required:
- name
type: object
UpdateRole:
properties:
scopes:
properties:
remove:
items:
type: string
type: array
add:
items:
type: string
type: array
required:
- remove
- add
type: object
description:
type: string
name:
type: string
type: object
ApiUnassignRoleFromUserResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
RoleAssigneeKind:
type: string
enum:
- organization_user
- project_user
- project_group
- service_account
RoleAssignee:
properties:
projectName:
type: string
nullable: true
projectUuid:
type: string
nullable: true
assigneeName:
type: string
assigneeId:
type: string
kind:
$ref: '#/components/schemas/RoleAssigneeKind'
required:
- projectName
- projectUuid
- assigneeName
- assigneeId
- kind
type: object
ApiRoleAssigneesResponse:
properties:
results:
items:
$ref: '#/components/schemas/RoleAssignee'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
AddScopesToRole:
properties:
scopeNames:
items:
type: string
type: array
required:
- scopeNames
type: object
ApiRemoveScopeFromRoleResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
PullRequestWritebackAction:
type: string
enum:
- opened
- updated
description: 'Whether a writeback run opened a brand-new pull request or updated
an
existing one (a resumed thread or a pasted PR link). `null` when no pull
request was touched (the agent made no file changes).'
AiWritebackStep:
properties:
label:
type: string
kind:
type: string
enum:
- read
- edit
- search
- compile
- stage
required:
- label
- kind
type: object
description: 'One action the writeback sandbox took, in a generic shape the
chat UI can
group and render as step rows without knowing anything about writeback.
`kind` buckets the action (consecutive same-kind steps are grouped, e.g.
"Read 3 files"); `label` is the file basename or a stage description.'
AiWritebackRunResult:
properties:
steps:
items:
$ref: '#/components/schemas/AiWritebackStep'
type: array
description: Ordered actions the sandbox took, for the chat UI's step rows.
repository:
type: string
projectName:
type: string
deletions:
type: number
format: double
nullable: true
additions:
type: number
format: double
nullable: true
description: Lines this turn's commit added/removed; null when no commit
was made.
commitSha:
type: string
nullable: true
description: 'Head commit SHA this turn pushed onto the PR''s branch; null
when no commit
was made (no file changes, or the agent crashed before pushing). Pins
the
PR card''s CI checks to this turn''s commit so a later turn''s commit
can''t
retroactively change what an earlier card shows.'
prAction:
allOf:
- $ref: '#/components/schemas/PullRequestWritebackAction'
nullable: true
prUrl:
type: string
nullable: true
exitCode:
type: number
format: double
output:
type: string
required:
- steps
- repository
- projectName
- deletions
- additions
- commitSha
- prAction
- prUrl
- exitCode
- output
type: object
ApiSuccess_AiWritebackRunResult_:
properties:
results:
$ref: '#/components/schemas/AiWritebackRunResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiWritebackResponse:
$ref: '#/components/schemas/ApiSuccess_AiWritebackRunResult_'
AiWritebackRequestBody:
properties:
prompt:
type: string
required:
- prompt
type: object
description: 'Body for kicking off an AI writeback run. The target repository
is
cloned into a sandbox, the prompt is executed by the Claude Code CLI, and
a
pull request is opened against the repo if the agent changes any files.
The target repository (owner, repo) and the dbt project sub-folder are
resolved server-side from the Lightdash project''s dbt connection — identified
by the `projectUuid` path parameter — so the caller only supplies the prompt.'
ProjectCiStatus:
properties:
checkedAt:
type: string
format: date-time
detectedCommitSha:
type: string
nullable: true
description: Repo HEAD commit the scan ran against, for debugging staleness.
workflowPath:
type: string
nullable: true
description: Path of the detected workflow file, or null when none was found.
hasPreviewDeployWorkflow:
type: boolean
projectUuid:
type: string
required:
- checkedAt
- detectedCommitSha
- workflowPath
- hasPreviewDeployWorkflow
- projectUuid
type: object
description: 'Per-project record of whether a project''s git repo has Lightdash
CI/CD set
up. Populated as a secondary task of the AI writeback sandbox agent: while
it
has the repo cloned it scans `.github/workflows/` for a Lightdash
preview-deploy workflow and persists the result so we don''t re-scan a project
that already has it set up.'
ApiProjectCiStatusResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/ProjectCiStatus'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: 'CI status for a project, or null when the project has never been
scanned
(e.g. no AI writeback has run yet). A null result means "unknown", which is
distinct from a record with `hasPreviewDeployWorkflow: false` ("scanned, no
preview workflow").'
CiProviderType:
description: 'Continuous-integration status for a pull request, abstracted across
CI
providers. GitHub Actions is the first (and currently only) adapter, but the
vocabulary here is deliberately host-agnostic so GitLab pipelines, Buildkite,
etc. can be added behind the same interface without changing consumers.'
enum:
- github
type: string
CiCheckState:
description: 'Provider-agnostic outcome of a single CI check. Each host''s native
states are
mapped onto these by its adapter (e.g. GitHub''s `queued`/`in_progress` →
`pending`; `timed_out` → `failure`).'
enum:
- success
- failure
- pending
- cancelled
- skipped
- neutral
type: string
CiMergeState:
description: 'Whether the PR may actually be merged, per the repo''s own policy
(branch
protection: required checks + required reviews). This is distinct from the
CI roll-up: a check can fail yet the PR still be mergeable when that check
isn''t *required* — so the merge verdict must come from the provider, never
be inferred from check states. Maps GitHub''s `mergeable_state`.'
enum:
- ready
- unstable
- blocked
- conflicts
- behind
- draft
- unknown
type: string
CiCheck:
properties:
url:
type: string
nullable: true
description: Link to the run on the provider, when available.
state:
$ref: '#/components/schemas/CiCheckState'
name:
type: string
required:
- url
- state
- name
type: object
description: A single CI check (one GitHub Actions job/check run, or equivalent).
CiChecks:
properties:
checks:
items:
$ref: '#/components/schemas/CiCheck'
type: array
state:
type: string
enum:
- open
- closed
description: 'Whether the PR is open or closed. A closed-but-not-merged
PR is terminal
too, so the card shows "Closed" and offers neither merge nor close.'
merged:
type: boolean
description: 'Whether the PR is already merged. Once merged the provider''s
`mergeState` is no longer meaningful, so consumers show a terminal
"Merged" state and suppress the merge action.'
mergeState:
$ref: '#/components/schemas/CiMergeState'
description: 'Whether the PR can actually be merged per the repo''s policy
— resolved
from the provider, NOT inferred from `overall`. Drives the merge-
readiness verdict so a failing-but-not-required check doesn''t read as
"blocked".'
overall:
$ref: '#/components/schemas/CiCheckState'
description: CI-only rollup of the check states. Drives the summary bar.
provider:
$ref: '#/components/schemas/CiProviderType'
required:
- checks
- state
- merged
- mergeState
- overall
- provider
type: object
description: 'The CI checks for a pull request, plus a single rolled-up state
for an
at-a-glance summary. `checks` is empty when the ref has no CI configured.'
ApiCiChecksResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/CiChecks'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: 'CI checks for a PR, or null when CI status can''t be resolved
(project isn''t
connected to a supported provider, no app installation, PR not found, etc.)
—
distinct from a resolved result with an empty `checks` array ("no CI runs").'
ClosePullRequestResult:
properties:
state:
type: string
enum:
- open
- closed
required:
- state
type: object
description: Outcome of closing a pull request.
ApiClosePullRequestResponse:
properties:
results:
$ref: '#/components/schemas/ClosePullRequestResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ClosePullRequestRequestBody:
properties:
prUrl:
type: string
description: The PR/MR URL of the write-back pull request to close.
required:
- prUrl
type: object
description: Body for closing a write-back pull request from the chat PR card.
ApiPullRequestDiffResponse:
properties:
results:
properties:
diff:
type: string
required:
- diff
type: object
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: 'The raw unified diff of a write-back pull request (or a single
pinned commit
within it), for the chat card''s diff viewer. Null when it can''t be resolved
(unsupported source control, no app installation, PR not found, diff too
large for the provider to return).'
MergePullRequestResult:
properties:
sha:
type: string
nullable: true
description: The resulting merge commit SHA, when the provider returns one.
merged:
type: boolean
required:
- sha
- merged
type: object
description: Outcome of a pull request merge.
ApiMergePullRequestResponse:
properties:
results:
$ref: '#/components/schemas/MergePullRequestResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
MergePullRequestRequestBody:
properties:
sha:
type: string
description: 'The commit the card is pinned to. When set the merge only
proceeds if the
PR''s head still points at this SHA, so a user never merges a commit they
haven''t seen (a later turn may have pushed a newer head).'
prUrl:
type: string
description: The PR/MR URL of the write-back pull request to merge.
required:
- prUrl
type: object
description: Body for merging a write-back pull request from the chat PR card.
ProjectFiles:
properties:
truncated:
type: boolean
files:
items:
type: string
type: array
required:
- truncated
- files
type: object
description: 'The project''s source files, read from the read-only repo virtual
file system
(the same VFS the agent''s repoShell sees). Used by the chat input''s
`@`-mention file picker. Paths are relative to the project''s dbt sub-folder,
so an'
ApiProjectFilesResponse:
properties:
results:
$ref: '#/components/schemas/ProjectFiles'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_AiAgentThreadSummary_AiAgentUser-and-_slackUserId-string-or-null--email-string-or-null__.user-or-createdAt-or-createdFrom-or-title-or-uuid_
: properties:
createdAt:
type: string
user:
allOf:
- $ref: '#/components/schemas/AiAgentUser'
- properties:
email:
type: string
nullable: true
slackUserId:
type: string
nullable: true
required:
- email
- slackUserId
type: object
uuid:
type: string
title:
type: string
nullable: true
createdFrom:
type: string
required:
- createdAt
- user
- uuid
- title
- createdFrom
type: object
description: From T, pick a set of properties whose keys are in the union K
ThreadSummary:
$ref: '#/components/schemas/Pick_AiAgentThreadSummary_AiAgentUser-and-_slackUserId-string-or-null--email-string-or-null__.user-or-createdAt-or-createdFrom-or-title-or-uuid_'
Pick_AiAgentSummary.uuid-or-name-or-imageUrl_:
properties:
name:
type: string
uuid:
type: string
imageUrl:
type: string
nullable: true
required:
- name
- uuid
- imageUrl
type: object
description: From T, pick a set of properties whose keys are in the union K
AiAgentAdminFeedbackSummary:
properties:
total:
type: number
format: double
neutral:
type: number
format: double
downvotes:
type: number
format: double
upvotes:
type: number
format: double
required:
- total
- neutral
- downvotes
- upvotes
type: object
AiAgentAdminThreadSummary:
allOf:
- $ref: '#/components/schemas/ThreadSummary'
- properties:
slackThreadTs:
type: string
nullable: true
slackChannelId:
type: string
nullable: true
promptCount:
type: number
format: double
feedbackSummary:
$ref: '#/components/schemas/AiAgentAdminFeedbackSummary'
project:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
agent:
$ref: '#/components/schemas/Pick_AiAgentSummary.uuid-or-name-or-imageUrl_'
required:
- slackThreadTs
- slackChannelId
- promptCount
- feedbackSummary
- project
- agent
type: object
AiAgentAdminConversationsSummary:
properties:
threads:
items:
$ref: '#/components/schemas/AiAgentAdminThreadSummary'
type: array
required:
- threads
type: object
KnexPaginatedData_AiAgentAdminConversationsSummary_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
$ref: '#/components/schemas/AiAgentAdminConversationsSummary'
required:
- data
type: object
ApiSuccess_KnexPaginatedData_AiAgentAdminConversationsSummary__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_AiAgentAdminConversationsSummary_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentAdminConversationsResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_AiAgentAdminConversationsSummary__'
AiAgentAdminSortField:
type: string
enum:
- createdAt
- title
AiAgentRootCause:
type: string
enum:
- semantic_layer
- project_context
- agent_configuration
- product_capability
- runtime_reliability
- feedback_quality
- not_a_failure
- ambiguous
AiAgentReviewItemStatus:
type: string
enum:
- open
- in_progress
- resolved
- dismissed
- duplicate
AiAgentReviewItemDismissedReason:
type: string
enum:
- not_actionable
- expected_behavior
- duplicate
- low_confidence
- other
AiAgentReviewItemOwnerType:
type: string
enum:
- semantic_layer_owner
- agent_admin
- product
- support
- unknown
AiAgentReviewItemPrState:
type: string
enum:
- open
- merged
- closed
AiAgentReviewItemWritebackStatus:
type: string
enum:
- queued
- running
- completed
- failed
AiAgentReviewItem:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
prWritebackMessage:
type: string
nullable: true
prWritebackStatus:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItemWritebackStatus'
nullable: true
prState:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItemPrState'
nullable: true
linkedPrUrl:
type: string
nullable: true
linkedIssueUrl:
type: string
nullable: true
statusUpdatedByUserUuid:
type: string
nullable: true
statusUpdatedAt:
type: string
format: date-time
findingCount:
type: number
format: double
lastSeenAt:
type: string
format: date-time
firstSeenAt:
type: string
format: date-time
assignedToUserUuid:
type: string
nullable: true
ownerType:
$ref: '#/components/schemas/AiAgentReviewItemOwnerType'
dismissedReason:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItemDismissedReason'
nullable: true
status:
$ref: '#/components/schemas/AiAgentReviewItemStatus'
primaryRootCause:
$ref: '#/components/schemas/AiAgentRootCause'
description:
type: string
title:
type: string
agentUuid:
type: string
nullable: true
projectUuid:
type: string
nullable: true
organizationUuid:
type: string
fingerprint:
type: string
uuid:
type: string
required:
- updatedAt
- createdAt
- prWritebackMessage
- prWritebackStatus
- prState
- linkedPrUrl
- linkedIssueUrl
- statusUpdatedByUserUuid
- statusUpdatedAt
- findingCount
- lastSeenAt
- firstSeenAt
- assignedToUserUuid
- ownerType
- dismissedReason
- status
- primaryRootCause
- description
- title
- agentUuid
- projectUuid
- organizationUuid
- fingerprint
- uuid
type: object
PullRequestProvider:
enum:
- github
- gitlab
type: string
AiAgentReviewItemWritebackStrategy:
type: string
enum:
- semantic_layer
- project_context
AiAgentReviewItemWritebackBlockedReason:
type: string
enum:
- reviews_disabled
- unsupported_root_cause
- missing_project
- missing_project_context_entry
- project_context_disabled
- unsupported_source_control
- git_app_not_installed
- missing_writeback_config
- pull_request_open
- source_thread_writeback_exists
- terminal_state
- writeback_in_progress
AiAgentReviewItemWritebackEligibility:
anyOf:
- properties:
reason:
type: number
enum:
- null
nullable: true
strategy:
$ref: '#/components/schemas/AiAgentReviewItemWritebackStrategy'
provider:
$ref: '#/components/schemas/PullRequestProvider'
eligible:
type: boolean
enum:
- true
nullable: false
required:
- reason
- strategy
- provider
- eligible
type: object
- properties:
reason:
$ref: '#/components/schemas/AiAgentReviewItemWritebackBlockedReason'
strategy:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItemWritebackStrategy'
nullable: true
provider:
allOf:
- $ref: '#/components/schemas/PullRequestProvider'
nullable: true
eligible:
type: boolean
enum:
- false
nullable: false
required:
- reason
- strategy
- provider
- eligible
type: object
AiAgentReviewRemediationStatus:
type: string
enum:
- queued
- running
- pr_open
- preview_ready
- resolved
- failed
AiAgentReviewRemediation:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
resolvedAt:
type: string
format: date-time
nullable: true
resolvedByUserUuid:
type: string
nullable: true
createdByUserUuid:
type: string
nullable: true
retryPrompt:
type: string
nullable: true
errorMessage:
type: string
nullable: true
status:
$ref: '#/components/schemas/AiAgentReviewRemediationStatus'
previewThreadUuid:
type: string
nullable: true
previewAgentUuid:
type: string
nullable: true
previewProjectUuid:
type: string
nullable: true
linkedPrUrl:
type: string
nullable: true
pullRequestUuid:
type: string
nullable: true
sourceAgentUuid:
type: string
sourceProjectUuid:
type: string
sourceThreadUuid:
type: string
sourcePromptUuid:
type: string
sourceFindingUuid:
type: string
organizationUuid:
type: string
fingerprint:
type: string
uuid:
type: string
required:
- updatedAt
- createdAt
- resolvedAt
- resolvedByUserUuid
- createdByUserUuid
- retryPrompt
- errorMessage
- status
- previewThreadUuid
- previewAgentUuid
- previewProjectUuid
- linkedPrUrl
- pullRequestUuid
- sourceAgentUuid
- sourceProjectUuid
- sourceThreadUuid
- sourcePromptUuid
- sourceFindingUuid
- organizationUuid
- fingerprint
- uuid
type: object
AiAgentFixTarget:
type: string
enum:
- semantic_yaml_patch
- project_context_rule
- agent_configuration_change
- dbt_modeling_ticket
- semantic_layer_ticket
- product_capability_ticket
- runtime_reliability_ticket
- feedback_needed
- no_action
AiAgentSemanticTargetRef:
anyOf:
- properties:
modelName:
type: string
type:
type: string
enum:
- model
nullable: false
required:
- modelName
- type
type: object
- properties:
exploreName:
type: string
modelName:
type: string
type:
type: string
enum:
- explore
nullable: false
required:
- exploreName
- modelName
- type
type: object
- properties:
exploreName:
type: string
joinName:
type: string
modelName:
type: string
type:
type: string
enum:
- join
nullable: false
required:
- joinName
- modelName
- type
type: object
- properties:
dimensionName:
type: string
modelName:
type: string
type:
type: string
enum:
- dimension
nullable: false
required:
- dimensionName
- modelName
- type
type: object
- properties:
dimensionName:
type: string
metricName:
type: string
modelName:
type: string
type:
type: string
enum:
- metric
nullable: false
required:
- metricName
- modelName
- type
type: object
- properties:
dimensionName:
type: string
parentDimensionName:
type: string
modelName:
type: string
type:
type: string
enum:
- additional_dimension
nullable: false
required:
- dimensionName
- parentDimensionName
- modelName
- type
type: object
- properties:
fieldName:
type: string
exploreName:
type: string
modelName:
type: string
type:
type: string
enum:
- required_filter
nullable: false
required:
- fieldName
- exploreName
- modelName
- type
type: object
- properties:
targetName:
type: string
targetType:
type: string
enum:
- model
- dimension
- metric
modelName:
type: string
type:
type: string
enum:
- ai_hint
nullable: false
required:
- targetName
- targetType
- modelName
- type
type: object
AiAgentConfigurationSetting:
type: string
enum:
- instructions
- knowledge_documents
- data_access
- self_improvement
- sql_mode
- mcp_servers
- explore_tags
- space_access
- user_or_group_access
- unknown
AiAgentTargetRef:
anyOf:
- $ref: '#/components/schemas/AiAgentSemanticTargetRef'
- properties:
agentUuid:
type: string
type:
type: string
enum:
- agent
nullable: false
required:
- agentUuid
- type
type: object
- properties:
setting:
$ref: '#/components/schemas/AiAgentConfigurationSetting'
type:
type: string
enum:
- agent_config
nullable: false
required:
- setting
- type
type: object
- properties:
capabilityKey:
type: string
type:
type: string
enum:
- product_capability
nullable: false
required:
- capabilityKey
- type
type: object
- properties:
key:
type: string
type:
type: string
enum:
- runtime
nullable: false
required:
- key
- type
type: object
AiAgentEvidenceExcerpt:
properties:
redacted:
type: boolean
text:
type: string
source:
type: string
enum:
- user_prompt
- assistant_answer
- next_user_prompt
- conversation_context
- tool_call
- tool_result
- agent_config
required:
- redacted
- text
- source
type: object
AiAgentRecommendationAction:
type: string
enum:
- update_semantic_yaml
- update_agent_instructions
- add_knowledge_document
- enable_data_access
- enable_sql_mode
- enable_self_improvement
- configure_mcp_server
- adjust_explore_tags
- update_access
- route_to_product_work
- request_more_evidence
- no_action
AiAgentRecommendation:
properties:
targetRefs:
items:
$ref: '#/components/schemas/AiAgentTargetRef'
type: array
rationale:
type: string
title:
type: string
actionType:
$ref: '#/components/schemas/AiAgentRecommendationAction'
required:
- targetRefs
- rationale
- title
- actionType
type: object
AiAgentJudgeProjectContextEntry:
properties:
objects:
items:
type: string
type: array
terms:
items:
type: string
type: array
content:
type: string
kind:
type: string
enum:
- definition
- context
id:
type: string
nullable: true
op:
type: string
enum:
- create
- update
required:
- objects
- terms
- content
- kind
- id
- op
type: object
AiAgentReviewItemSummary:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItem'
- properties:
latestFinding:
properties:
createdAt:
type: string
format: date-time
projectContextEntry:
allOf:
- $ref: '#/components/schemas/AiAgentJudgeProjectContextEntry'
nullable: true
recommendation:
allOf:
- $ref: '#/components/schemas/AiAgentRecommendation'
nullable: true
evidenceExcerpts:
items:
$ref: '#/components/schemas/AiAgentEvidenceExcerpt'
type: array
targetRefs:
items:
$ref: '#/components/schemas/AiAgentTargetRef'
type: array
fixTargets:
items:
$ref: '#/components/schemas/AiAgentFixTarget'
type: array
subcategories:
items:
type: string
type: array
agentUuid:
type: string
projectUuid:
type: string
threadUuid:
type: string
promptUuid:
type: string
uuid:
type: string
required:
- createdAt
- projectContextEntry
- recommendation
- evidenceExcerpts
- targetRefs
- fixTargets
- subcategories
- agentUuid
- projectUuid
- threadUuid
- promptUuid
- uuid
type: object
nullable: true
remediation:
allOf:
- $ref: '#/components/schemas/AiAgentReviewRemediation'
nullable: true
writebackEligibility:
$ref: '#/components/schemas/AiAgentReviewItemWritebackEligibility'
writebackEligible:
type: boolean
description: 'Legacy boolean kept for current clients. New clients should
use
writebackEligibility for the blocking reason and provider.'
required:
- latestFinding
- remediation
- writebackEligibility
- writebackEligible
type: object
ApiSuccess_AiAgentReviewItemSummary-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentReviewItemSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewItemsResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewItemSummary-Array_'
ApiSuccess_AiAgentReviewItemSummary_:
properties:
results:
$ref: '#/components/schemas/AiAgentReviewItemSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewItemResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewItemSummary_'
AiAgentReviewRemediationEventDetail:
anyOf:
- properties:
payload:
properties:
sourcePromptUuid:
type: string
sourceThreadUuid:
type: string
excerpt:
type: string
nullable: true
required:
- sourcePromptUuid
- sourceThreadUuid
- excerpt
type: object
eventType:
type: string
enum:
- finding_opened
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
deletions:
type: number
format: double
nullable: true
additions:
type: number
format: double
nullable: true
files:
items:
type: string
type: array
required:
- deletions
- additions
- files
type: object
eventType:
type: string
enum:
- writeback_completed
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
prNumber:
type: number
format: double
nullable: true
prUrl:
type: string
required:
- prNumber
- prUrl
type: object
eventType:
type: string
enum:
- pr_opened
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
previewProjectUuid:
type: string
required:
- previewProjectUuid
type: object
eventType:
type: string
enum:
- preview_compiled
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
previewThreadUuid:
type: string
required:
- previewThreadUuid
type: object
eventType:
type: string
enum:
- verification_completed
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
prUrl:
type: string
required:
- prUrl
type: object
eventType:
type: string
enum:
- pr_merged
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
prUrl:
type: string
required:
- prUrl
type: object
eventType:
type: string
enum:
- pr_closed
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
$ref: '#/components/schemas/Record_string.never_'
eventType:
type: string
enum:
- resolved
nullable: false
required:
- payload
- eventType
type: object
- properties:
payload:
properties:
errorMessage:
type: string
nullable: true
required:
- errorMessage
type: object
eventType:
type: string
enum:
- failed
nullable: false
required:
- payload
- eventType
type: object
AiAgentReviewRemediationEvent:
allOf:
- properties:
createdByUserUuid:
type: string
nullable: true
occurredAt:
type: string
format: date-time
remediationUuid:
type: string
uuid:
type: string
required:
- createdByUserUuid
- occurredAt
- remediationUuid
- uuid
type: object
- $ref: '#/components/schemas/AiAgentReviewRemediationEventDetail'
AiAgentReviewRemediationLiveState:
type: string
enum:
- writeback
- compiling
- verifying
description: 'The in-flight step of a remediation, derived from current status
+ which
events exist — never stored. Renders as the single accented "live" row.'
AiAgentReviewItemActivity:
properties:
liveMessage:
type: string
nullable: true
description: Streaming progress text for the live row (writeback step messages).
liveState:
allOf:
- $ref: '#/components/schemas/AiAgentReviewRemediationLiveState'
nullable: true
events:
items:
$ref: '#/components/schemas/AiAgentReviewRemediationEvent'
type: array
required:
- liveMessage
- liveState
- events
type: object
ApiSuccess_AiAgentReviewItemActivity_:
properties:
results:
$ref: '#/components/schemas/AiAgentReviewItemActivity'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewItemActivityResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewItemActivity_'
AiAgentReviewItemPrDiffFile:
properties:
after:
type: string
before:
type: string
deletions:
type: number
format: double
additions:
type: number
format: double
status:
type: string
path:
type: string
required:
- after
- before
- deletions
- additions
- status
- path
type: object
AiAgentReviewItemPrDiff:
properties:
truncated:
type: boolean
totalDeletions:
type: number
format: double
totalAdditions:
type: number
format: double
files:
items:
$ref: '#/components/schemas/AiAgentReviewItemPrDiffFile'
type: array
prUrl:
type: string
required:
- truncated
- totalDeletions
- totalAdditions
- files
- prUrl
type: object
ApiSuccess_AiAgentReviewItemPrDiff_:
properties:
results:
$ref: '#/components/schemas/AiAgentReviewItemPrDiff'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewItemPrDiffResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewItemPrDiff_'
UpdateAiAgentReviewItemStatus:
properties:
dismissedReason:
allOf:
- $ref: '#/components/schemas/AiAgentReviewItemDismissedReason'
nullable: true
status:
$ref: '#/components/schemas/AiAgentReviewItemStatus'
required:
- dismissedReason
- status
type: object
AiAgentReviewItemWritebackPreview:
anyOf:
- properties:
entryId:
type: string
op:
type: string
enum:
- create
- update
after:
type: string
before:
type: string
fileName:
type: string
available:
type: boolean
enum:
- true
nullable: false
required:
- entryId
- op
- after
- before
- fileName
- available
type: object
- properties:
available:
type: boolean
enum:
- false
nullable: false
required:
- available
type: object
description: 'Preview of the file change a writeback PR would make, computed
deterministically
(no PR opened). Only available for the project_context strategy — semantic_layer
runs in a sandbox, so there is no static diff to show before the PR is created.'
ApiSuccess_AiAgentReviewItemWritebackPreview_:
properties:
results:
$ref: '#/components/schemas/AiAgentReviewItemWritebackPreview'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewItemWritebackPreviewResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewItemWritebackPreview_'
AiAgentTurnSignal:
type: string
enum:
- normal_refinement
- implicit_correction
- explicit_dispute
- retry_after_failure
- output_shape_correction
- new_question
- acceptance_or_continuation
- product_capability_request
- human_intervention
- ambiguous
AiAgentImplicitSignalSource:
type: string
enum:
- next_user_correction
- next_user_dispute
- next_user_retry
- output_shape_correction
- tool_error
- assistant_no_answer
- product_capability_request
- human_intervention
AiAgentReviewClassifierConfidence:
type: string
enum:
- low
- medium
- high
AiAgentReviewClassifierEventType:
type: string
enum:
- response_saved
- feedback_changed
AiAgentReviewClassifierRunScope:
anyOf:
- properties:
dryRun:
type: boolean
agentUuid:
type: string
projectUuid:
type: string
endedAt:
type: string
startedAt:
type: string
type:
type: string
enum:
- backfill
nullable: false
required:
- endedAt
- startedAt
- type
type: object
- properties:
agentUuid:
type: string
projectUuid:
type: string
threadUuid:
type: string
promptUuid:
type: string
eventType:
$ref: '#/components/schemas/AiAgentReviewClassifierEventType'
type:
type: string
enum:
- live_event
nullable: false
required:
- agentUuid
- projectUuid
- threadUuid
- promptUuid
- eventType
- type
type: object
- properties:
filters:
$ref: '#/components/schemas/Record_string.unknown_'
requestedByUserUuid:
type: string
type:
type: string
enum:
- manual
nullable: false
required:
- filters
- requestedByUserUuid
- type
type: object
AiAgentReviewSignalSummary:
properties:
finding:
properties:
recommendation:
allOf:
- $ref: '#/components/schemas/AiAgentRecommendation'
nullable: true
evidenceExcerpts:
items:
$ref: '#/components/schemas/AiAgentEvidenceExcerpt'
type: array
fixTargets:
items:
$ref: '#/components/schemas/AiAgentFixTarget'
type: array
subcategories:
items:
type: string
type: array
primaryRootCause:
$ref: '#/components/schemas/AiAgentRootCause'
reviewItemUuid:
type: string
nullable: true
uuid:
type: string
required:
- recommendation
- evidenceExcerpts
- fixTargets
- subcategories
- primaryRootCause
- reviewItemUuid
- uuid
type: object
nullable: true
errorMessage:
type: string
nullable: true
responsePreview:
type: string
nullable: true
prompt:
type: string
runScope:
$ref: '#/components/schemas/AiAgentReviewClassifierRunScope'
createdAt:
type: string
format: date-time
promotionReason:
type: string
nullable: true
promotedToFinding:
type: boolean
confidence:
$ref: '#/components/schemas/AiAgentReviewClassifierConfidence'
implicitSignalSources:
items:
$ref: '#/components/schemas/AiAgentImplicitSignalSource'
type: array
signal:
$ref: '#/components/schemas/AiAgentTurnSignal'
agentUuid:
type: string
projectUuid:
type: string
threadUuid:
type: string
promptUuid:
type: string
runUuid:
type: string
uuid:
type: string
required:
- finding
- errorMessage
- responsePreview
- prompt
- runScope
- createdAt
- promotionReason
- promotedToFinding
- confidence
- implicitSignalSources
- signal
- agentUuid
- projectUuid
- threadUuid
- promptUuid
- runUuid
- uuid
type: object
ApiSuccess_AiAgentReviewSignalSummary-Array_:
properties:
results:
items:
$ref: '#/components/schemas/AiAgentReviewSignalSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiAgentReviewSignalsResponse:
$ref: '#/components/schemas/ApiSuccess_AiAgentReviewSignalSummary-Array_'
AiOrganizationSettings:
properties:
aiAgentReviewsEnabled:
type: boolean
aiAgentsVisible:
type: boolean
organizationUuid:
type: string
required:
- aiAgentReviewsEnabled
- aiAgentsVisible
- organizationUuid
type: object
ComputedAiOrganizationSettings:
properties:
isTrial:
type: boolean
isCopilotEnabled:
type: boolean
required:
- isTrial
- isCopilotEnabled
type: object
ApiSuccess_AiOrganizationSettings-and-ComputedAiOrganizationSettings_:
properties:
results:
allOf:
- $ref: '#/components/schemas/AiOrganizationSettings'
- $ref: '#/components/schemas/ComputedAiOrganizationSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAiOrganizationSettingsResponse:
$ref: '#/components/schemas/ApiSuccess_AiOrganizationSettings-and-ComputedAiOrganizationSettings_'
ApiSuccess_AiOrganizationSettings_:
properties:
results:
$ref: '#/components/schemas/AiOrganizationSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpdateAiOrganizationSettingsResponse:
$ref: '#/components/schemas/ApiSuccess_AiOrganizationSettings_'
Partial_Omit_AiOrganizationSettings.organizationUuid__:
properties:
aiAgentsVisible:
type: boolean
aiAgentReviewsEnabled:
type: boolean
type: object
description: Make all properties in T optional
UpdateAiOrganizationSettings:
$ref: '#/components/schemas/Partial_Omit_AiOrganizationSettings.organizationUuid__'
ApiJobScheduledResponse:
properties:
results:
properties:
jobId:
type: string
required:
- jobId
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ValidationTarget:
enum:
- charts
- dashboards
- tables
type: string
ValidationErrorType:
enum:
- chart
- sorting
- filter
- metric
- model
- dimension
- custom metric
- chart configuration
type: string
ValidationSourceType:
enum:
- chart
- dashboard
- table
type: string
ValidationResponseBase:
properties:
source:
$ref: '#/components/schemas/ValidationSourceType'
spaceUuid:
type: string
projectUuid:
type: string
errorType:
$ref: '#/components/schemas/ValidationErrorType'
error:
type: string
name:
type: string
createdAt:
type: string
format: date-time
validationId:
type: number
format: double
nullable: true
deprecated: true
validationUuid:
type: string
required:
- projectUuid
- errorType
- error
- name
- createdAt
- validationId
- validationUuid
type: object
ValidationErrorChartResponse:
allOf:
- $ref: '#/components/schemas/ValidationResponseBase'
- properties:
chartName:
type: string
chartViews:
type: number
format: double
lastUpdatedAt:
type: string
format: date-time
lastUpdatedBy:
type: string
fieldName:
type: string
chartKind:
$ref: '#/components/schemas/ChartKind'
chartUuid:
type: string
required:
- chartViews
type: object
DashboardFilterValidationErrorType:
enum:
- field_does_not_exist
- field_table_mismatch
- table_not_used_by_any_chart
- table_does_not_exist
type: string
ValidationErrorDashboardResponse:
allOf:
- $ref: '#/components/schemas/ValidationResponseBase'
- properties:
dashboardViews:
type: number
format: double
lastUpdatedAt:
type: string
format: date-time
lastUpdatedBy:
type: string
dashboardFilterErrorType:
$ref: '#/components/schemas/DashboardFilterValidationErrorType'
tableName:
type: string
fieldName:
type: string
chartName:
type: string
dashboardUuid:
type: string
required:
- dashboardViews
type: object
Pick_ValidationResponseBase.Exclude_keyofValidationResponseBase.name__:
properties:
projectUuid:
type: string
createdAt:
type: string
format: date-time
error:
type: string
source:
$ref: '#/components/schemas/ValidationSourceType'
validationUuid:
type: string
validationId:
type: number
format: double
nullable: true
deprecated: true
errorType:
$ref: '#/components/schemas/ValidationErrorType'
spaceUuid:
type: string
required:
- projectUuid
- createdAt
- error
- validationUuid
- validationId
- errorType
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_ValidationResponseBase.name_:
$ref: '#/components/schemas/Pick_ValidationResponseBase.Exclude_keyofValidationResponseBase.name__'
description: Construct a type with the properties of T except for those in type
K.
ValidationErrorTableResponse:
allOf:
- $ref: '#/components/schemas/Omit_ValidationResponseBase.name_'
- properties:
name:
type: string
type: object
ValidationResponse:
anyOf:
- $ref: '#/components/schemas/ValidationErrorChartResponse'
- $ref: '#/components/schemas/ValidationErrorDashboardResponse'
- $ref: '#/components/schemas/ValidationErrorTableResponse'
ApiValidateResponse:
properties:
results:
items:
$ref: '#/components/schemas/ValidationResponse'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiValidationDismissResponse:
properties:
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
? Pick_ValidationErrorChartResponse.error-or-errorType-or-fieldName-or-name-or-projectUuid-or-chartUuid-or-source-or-chartName_
: properties:
name:
type: string
projectUuid:
type: string
error:
type: string
source:
$ref: '#/components/schemas/ValidationSourceType'
errorType:
$ref: '#/components/schemas/ValidationErrorType'
fieldName:
type: string
chartUuid:
type: string
chartName:
type: string
required:
- name
- projectUuid
- error
- errorType
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateChartValidation:
$ref: '#/components/schemas/Pick_ValidationErrorChartResponse.error-or-errorType-or-fieldName-or-name-or-projectUuid-or-chartUuid-or-source-or-chartName_'
ApiSuccess__errors-CreateChartValidation-Array__:
properties:
results:
properties:
errors:
items:
$ref: '#/components/schemas/CreateChartValidation'
type: array
required:
- errors
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiChartValidationResponse:
$ref: '#/components/schemas/ApiSuccess__errors-CreateChartValidation-Array__'
? Pick_ValidationErrorDashboardResponse.error-or-errorType-or-fieldName-or-name-or-projectUuid-or-dashboardUuid-or-chartName-or-source_
: properties:
name:
type: string
projectUuid:
type: string
error:
type: string
source:
$ref: '#/components/schemas/ValidationSourceType'
errorType:
$ref: '#/components/schemas/ValidationErrorType'
fieldName:
type: string
chartName:
type: string
dashboardUuid:
type: string
required:
- name
- projectUuid
- error
- errorType
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateDashboardValidation:
$ref: '#/components/schemas/Pick_ValidationErrorDashboardResponse.error-or-errorType-or-fieldName-or-name-or-projectUuid-or-dashboardUuid-or-chartName-or-source_'
ApiSuccess__errors-CreateDashboardValidation-Array__:
properties:
results:
properties:
errors:
items:
$ref: '#/components/schemas/CreateDashboardValidation'
type: array
required:
- errors
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiDashboardValidationResponse:
$ref: '#/components/schemas/ApiSuccess__errors-CreateDashboardValidation-Array__'
LightdashUser:
properties:
userUuid:
type: string
firstName:
type: string
lastName:
type: string
organizationUuid:
type: string
organizationName:
type: string
organizationCreatedAt:
type: string
format: date-time
userId:
type: number
format: double
role:
$ref: '#/components/schemas/OrganizationMemberRole'
roleUuid:
type: string
isTrackingAnonymized:
type: boolean
isMarketingOptedIn:
type: boolean
isSetupComplete:
type: boolean
email:
type: string
isActive:
type: boolean
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
timezone:
type: string
nullable: true
isPending:
type: boolean
required:
- userUuid
- firstName
- lastName
- userId
- isTrackingAnonymized
- isMarketingOptedIn
- isSetupComplete
- isActive
- createdAt
- updatedAt
- timezone
type: object
additionalProperties: true
ImpersonationInfo:
properties:
adminUserUuid:
type: string
adminName:
type: string
impersonatedUserUuid:
type: string
required:
- adminUserUuid
- adminName
- impersonatedUserUuid
type: object
additionalProperties: true
ApiGetAuthenticatedUserResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/LightdashUser'
- properties:
impersonation:
allOf:
- $ref: '#/components/schemas/ImpersonationInfo'
nullable: true
required:
- impersonation
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: Shows the authenticated user
ApiRegisterUserResponse:
properties:
results:
$ref: '#/components/schemas/LightdashUser'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ActivateUser:
properties:
password:
type: string
lastName:
type: string
firstName:
type: string
required:
- password
- lastName
- firstName
type: object
ActivateUserWithInviteCode:
allOf:
- $ref: '#/components/schemas/ActivateUser'
- properties:
inviteCode:
type: string
required:
- inviteCode
type: object
Email:
type: string
description: Email
pattern: ^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
CreateUserArgs:
properties:
password:
type: string
email:
$ref: '#/components/schemas/Email'
lastName:
type: string
firstName:
type: string
required:
- password
- email
- lastName
- firstName
type: object
RegisterOrActivateUser:
anyOf:
- $ref: '#/components/schemas/ActivateUserWithInviteCode'
- $ref: '#/components/schemas/CreateUserArgs'
EmailStatus:
properties:
otp:
$ref: '#/components/schemas/EmailOneTimePassword'
isVerified:
type: boolean
email:
type: string
required:
- isVerified
- email
type: object
EmailOneTimePasswordExpiring:
allOf:
- $ref: '#/components/schemas/EmailOneTimePassword'
- properties:
isMaxAttempts:
type: boolean
isExpired:
type: boolean
expiresAt:
type: string
format: date-time
required:
- isMaxAttempts
- isExpired
- expiresAt
type: object
EmailStatusExpiring:
allOf:
- $ref: '#/components/schemas/EmailStatus'
- properties:
otp:
$ref: '#/components/schemas/EmailOneTimePasswordExpiring'
description: 'One time passcode information
If there is no active passcode, this will be undefined'
type: object
description: Verification status of an email address
ApiEmailStatusResponse:
properties:
results:
$ref: '#/components/schemas/EmailStatusExpiring'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: Shows the current verification status of an email address
UserAllowedOrganization:
properties:
membersCount:
type: number
format: double
name:
type: string
organizationUuid:
type: string
required:
- membersCount
- name
- organizationUuid
type: object
ApiUserAllowedOrganizationsResponse:
properties:
results:
items:
$ref: '#/components/schemas/UserAllowedOrganization'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_CreateRedshiftCredentials-or-CreatePostgresCredentials-or-CreateSnowflakeCredentials-or-CreateTrinoCredentials-or-CreateClickhouseCredentials.type-or-user_
: properties:
user:
type: string
type:
anyOf:
- $ref: '#/components/schemas/WarehouseTypes.POSTGRES'
- $ref: '#/components/schemas/WarehouseTypes.REDSHIFT'
- $ref: '#/components/schemas/WarehouseTypes.SNOWFLAKE'
- $ref: '#/components/schemas/WarehouseTypes.TRINO'
- $ref: '#/components/schemas/WarehouseTypes.CLICKHOUSE'
required:
- user
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateBigqueryCredentials.type_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.BIGQUERY'
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateDatabricksCredentials.type_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DATABRICKS'
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateAthenaCredentials.type_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.ATHENA'
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateDuckdbCredentials.type_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
ProjectType:
enum:
- DEFAULT
- PREVIEW
type: string
UserWarehouseCredentialsProject:
properties:
type:
$ref: '#/components/schemas/ProjectType'
name:
type: string
projectUuid:
type: string
required:
- type
- name
- projectUuid
type: object
UserWarehouseCredentials:
properties:
project:
allOf:
- $ref: '#/components/schemas/UserWarehouseCredentialsProject'
nullable: true
credentials:
anyOf:
- $ref: '#/components/schemas/Pick_CreateRedshiftCredentials-or-CreatePostgresCredentials-or-CreateSnowflakeCredentials-or-CreateTrinoCredentials-or-CreateClickhouseCredentials.type-or-user_'
- $ref: '#/components/schemas/Pick_CreateBigqueryCredentials.type_'
- $ref: '#/components/schemas/Pick_CreateDatabricksCredentials.type_'
- $ref: '#/components/schemas/Pick_CreateAthenaCredentials.type_'
- $ref: '#/components/schemas/Pick_CreateDuckdbCredentials.type_'
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
name:
type: string
userUuid:
type: string
uuid:
type: string
required:
- project
- credentials
- updatedAt
- createdAt
- name
- userUuid
- uuid
type: object
Pick_CreateRedshiftCredentials.type-or-user-or-password_:
properties:
user:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.REDSHIFT'
password:
type: string
required:
- user
- type
- password
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreatePostgresCredentials.type-or-user-or-password_:
properties:
user:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.POSTGRES'
password:
type: string
required:
- user
- type
- password
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateSnowflakeCredentials.type-or-user-or-password-or-authenticationType-or-refreshToken_:
properties:
user:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.SNOWFLAKE'
password:
type: string
refreshToken:
type: string
authenticationType:
$ref: '#/components/schemas/SnowflakeAuthenticationType'
required:
- user
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateTrinoCredentials.type-or-user-or-password_:
properties:
user:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.TRINO'
password:
type: string
required:
- user
- type
- password
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateClickhouseCredentials.type-or-user-or-password_:
properties:
user:
type: string
type:
$ref: '#/components/schemas/WarehouseTypes.CLICKHOUSE'
password:
type: string
required:
- user
- type
- password
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateBigqueryCredentials.type-or-keyfileContents-or-authenticationType_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.BIGQUERY'
keyfileContents:
$ref: '#/components/schemas/Record_string.string_'
authenticationType:
$ref: '#/components/schemas/BigqueryAuthenticationType'
required:
- type
- keyfileContents
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateDatabricksCredentials.type-or-personalAccessToken-or-authenticationType-or-refreshToken_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DATABRICKS'
personalAccessToken:
type: string
refreshToken:
type: string
authenticationType:
$ref: '#/components/schemas/DatabricksAuthenticationType'
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Partial_Pick_CreateDatabricksCredentials.database-or-serverHostName-or-httpPath-or-oauthClientId__:
properties:
oauthClientId:
type: string
database:
type: string
serverHostName:
type: string
httpPath:
type: string
type: object
description: Make all properties in T optional
Pick_CreateAthenaCredentials.type-or-accessKeyId-or-secretAccessKey_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.ATHENA'
accessKeyId:
type: string
secretAccessKey:
type: string
required:
- type
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_CreateDuckdbMotherduckCredentials.type-or-token_:
properties:
type:
$ref: '#/components/schemas/WarehouseTypes.DUCKDB'
token:
type: string
required:
- type
- token
type: object
description: From T, pick a set of properties whose keys are in the union K
UpsertUserWarehouseCredentials:
properties:
credentials:
anyOf:
- $ref: '#/components/schemas/Pick_CreateRedshiftCredentials.type-or-user-or-password_'
- $ref: '#/components/schemas/Pick_CreatePostgresCredentials.type-or-user-or-password_'
- $ref: '#/components/schemas/Pick_CreateSnowflakeCredentials.type-or-user-or-password-or-authenticationType-or-refreshToken_'
- $ref: '#/components/schemas/Pick_CreateTrinoCredentials.type-or-user-or-password_'
- $ref: '#/components/schemas/Pick_CreateClickhouseCredentials.type-or-user-or-password_'
- $ref: '#/components/schemas/Pick_CreateBigqueryCredentials.type-or-keyfileContents-or-authenticationType_'
- allOf:
- $ref: '#/components/schemas/Pick_CreateDatabricksCredentials.type-or-personalAccessToken-or-authenticationType-or-refreshToken_'
- $ref: '#/components/schemas/Partial_Pick_CreateDatabricksCredentials.database-or-serverHostName-or-httpPath-or-oauthClientId__'
- $ref: '#/components/schemas/Pick_CreateAthenaCredentials.type-or-accessKeyId-or-secretAccessKey_'
- $ref: '#/components/schemas/Pick_CreateDuckdbMotherduckCredentials.type-or-token_'
name:
type: string
required:
- credentials
- name
type: object
OpenIdIdentityIssuerType:
enum:
- google
- okta
- oneLogin
- azuread
- oidc
- snowflake
- databricks
- slack
type: string
LocalIssuerTypes:
enum:
- email
- apiToken
type: string
LoginOptionTypes:
anyOf:
- $ref: '#/components/schemas/OpenIdIdentityIssuerType'
- $ref: '#/components/schemas/LocalIssuerTypes'
LoginOptions:
properties:
redirectUri:
type: string
forceRedirect:
type: boolean
showOptions:
items:
$ref: '#/components/schemas/LoginOptionTypes'
type: array
required:
- showOptions
type: object
ApiGetLoginOptionsResponse:
properties:
results:
$ref: '#/components/schemas/LoginOptions'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
PersonalAccessToken:
properties:
description:
type: string
expiresAt:
type: string
format: date-time
nullable: true
rotatedAt:
type: string
format: date-time
nullable: true
lastUsedAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
uuid:
type: string
required:
- description
- expiresAt
- rotatedAt
- lastUsedAt
- createdAt
- uuid
type: object
PersonalAccessTokenWithToken:
allOf:
- $ref: '#/components/schemas/PersonalAccessToken'
- properties:
token:
type: string
required:
- token
type: object
Pick_PersonalAccessToken.expiresAt-or-description_:
properties:
expiresAt:
type: string
format: date-time
nullable: true
description:
type: string
required:
- expiresAt
- description
type: object
description: From T, pick a set of properties whose keys are in the union K
CreatePersonalAccessToken:
allOf:
- $ref: '#/components/schemas/Pick_PersonalAccessToken.expiresAt-or-description_'
- properties:
autoGenerated:
type: boolean
required:
- autoGenerated
type: object
Partial_Pick_Organization.name-or-createdAt-or-organizationUuid__:
properties:
name:
type: string
description: The name of the organization
createdAt:
type: string
format: date-time
organizationUuid:
type: string
description: The unique identifier of the organization
format: uuid
type: object
description: Make all properties in T optional
SessionAuth:
properties:
source:
type: string
type:
type: string
enum:
- session
nullable: false
required:
- source
- type
type: object
JwtAuth:
properties:
source:
type: string
data:
$ref: '#/components/schemas/CreateEmbedJwt'
type:
type: string
enum:
- jwt
nullable: false
required:
- source
- data
- type
type: object
ServiceAccountAuth:
properties:
serviceAccountDescription:
type: string
serviceAccountUuid:
type: string
source:
type: string
type:
type: string
enum:
- service-account
nullable: false
required:
- serviceAccountDescription
- serviceAccountUuid
- source
- type
type: object
PersonalAccessTokenAuth:
properties:
source:
type: string
type:
type: string
enum:
- pat
nullable: false
required:
- source
- type
type: object
url.URL:
type: string
description: 'The URL interface represents an object providing static methods
used for creating object URLs.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/URL)
`URL` class is a global reference for `import { URL } from ''url''`
https://nodejs.org/api/url.html#the-whatwg-url-api'
OauthAuth:
properties:
resource:
$ref: '#/components/schemas/url.URL'
expiresAt:
type: number
format: double
scopes:
items:
type: string
type: array
clientId:
type: string
token:
type: string
source:
type: string
type:
type: string
enum:
- oauth
nullable: false
required:
- scopes
- clientId
- token
- source
- type
type: object
AccountRequestContext:
properties:
requestId:
type: string
userAgent:
type: string
ip:
type: string
type: object
description: 'Per-request metadata captured by the auth middleware. Used by
the audit log
to record the IP, user agent and request id alongside permission checks.'
Pick_Account.Exclude_keyofAccount.user-or-keyofAccountHelpers__:
properties:
organization:
$ref: '#/components/schemas/Partial_Pick_Organization.name-or-createdAt-or-organizationUuid__'
authentication:
anyOf:
- $ref: '#/components/schemas/SessionAuth'
- $ref: '#/components/schemas/JwtAuth'
- $ref: '#/components/schemas/ServiceAccountAuth'
- $ref: '#/components/schemas/PersonalAccessTokenAuth'
- $ref: '#/components/schemas/OauthAuth'
requestContext:
$ref: '#/components/schemas/AccountRequestContext'
required:
- organization
- authentication
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Account.user-or-keyofAccountHelpers_:
$ref: '#/components/schemas/Pick_Account.Exclude_keyofAccount.user-or-keyofAccountHelpers__'
description: Construct a type with the properties of T except for those in type
K.
Pick_Account-at-user.Exclude_keyofAccount-at-user.ability-or-abilityRules__:
properties:
id:
type: string
deprecated: true
type:
type: string
enum:
- registered
- anonymous
email:
type: string
isActive:
type: boolean
required:
- id
- type
- isActive
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Account-at-user.ability-or-abilityRules_:
$ref: '#/components/schemas/Pick_Account-at-user.Exclude_keyofAccount-at-user.ability-or-abilityRules__'
description: Construct a type with the properties of T except for those in type
K.
SerializedAccount:
allOf:
- $ref: '#/components/schemas/Omit_Account.user-or-keyofAccountHelpers_'
- properties:
user:
$ref: '#/components/schemas/Omit_Account-at-user.ability-or-abilityRules_'
required:
- user
type: object
ApiGetAccountResponse:
properties:
results:
$ref: '#/components/schemas/SerializedAccount'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UserAttributeValue:
properties:
value:
type: string
email:
type: string
userUuid:
type: string
required:
- value
- email
- userUuid
type: object
GroupAttributeValue:
properties:
value:
type: string
groupUuid:
type: string
required:
- value
- groupUuid
type: object
UserAttribute:
properties:
attributeDefault:
type: string
nullable: true
groups:
items:
$ref: '#/components/schemas/GroupAttributeValue'
type: array
users:
items:
$ref: '#/components/schemas/UserAttributeValue'
type: array
description:
type: string
organizationUuid:
type: string
name:
type: string
createdAt:
type: string
format: date-time
uuid:
type: string
required:
- attributeDefault
- groups
- users
- organizationUuid
- name
- createdAt
- uuid
type: object
ApiUserAttributesResponse:
properties:
results:
items:
$ref: '#/components/schemas/UserAttribute'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateUserAttributeResponse:
properties:
results:
$ref: '#/components/schemas/UserAttribute'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_UserAttribute.name-or-description-or-attributeDefault_:
properties:
description:
type: string
name:
type: string
attributeDefault:
type: string
nullable: true
required:
- name
- attributeDefault
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_UserAttributeValue.Exclude_keyofUserAttributeValue.email__:
properties:
userUuid:
type: string
value:
type: string
required:
- userUuid
- value
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_UserAttributeValue.email_:
$ref: '#/components/schemas/Pick_UserAttributeValue.Exclude_keyofUserAttributeValue.email__'
description: Construct a type with the properties of T except for those in type
K.
CreateUserAttributeValue:
$ref: '#/components/schemas/Omit_UserAttributeValue.email_'
CreateGroupAttributeValue:
$ref: '#/components/schemas/GroupAttributeValue'
CreateUserAttribute:
allOf:
- $ref: '#/components/schemas/Pick_UserAttribute.name-or-description-or-attributeDefault_'
- properties:
groups:
items:
$ref: '#/components/schemas/CreateGroupAttributeValue'
type: array
users:
items:
$ref: '#/components/schemas/CreateUserAttributeValue'
type: array
required:
- groups
- users
type: object
UserWithCount:
properties:
count:
type: number
format: double
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
ActivityViews:
properties:
name:
type: string
uuid:
type: string
count:
type: number
format: double
required:
- name
- uuid
- count
type: object
UserActivity:
properties:
chartViews:
items:
$ref: '#/components/schemas/ActivityViews'
type: array
userMostViewedDashboards:
items:
allOf:
- $ref: '#/components/schemas/UserWithCount'
- properties:
dashboardUuid:
type: string
dashboardName:
type: string
required:
- dashboardUuid
- dashboardName
type: object
type: array
dashboardViews:
items:
$ref: '#/components/schemas/ActivityViews'
type: array
chartWeeklyAverageQueries:
items:
properties:
average_number_of_weekly_queries_per_user:
type: string
date:
type: string
format: date-time
required:
- average_number_of_weekly_queries_per_user
- date
type: object
type: array
chartWeeklyQueryingUsers:
items:
properties:
percent_7d_active_users:
type: string
num_7d_active_users:
type: string
date:
type: string
format: date-time
required:
- percent_7d_active_users
- num_7d_active_users
- date
type: object
type: array
tableNoQueries:
items:
$ref: '#/components/schemas/UserWithCount'
type: array
tableMostCreatedCharts:
items:
$ref: '#/components/schemas/UserWithCount'
type: array
tableMostQueries:
items:
$ref: '#/components/schemas/UserWithCount'
type: array
numberWeeklyQueryingUsers:
type: number
format: double
numberAdmins:
type: number
format: double
numberEditors:
type: number
format: double
numberInteractiveViewers:
type: number
format: double
numberViewers:
type: number
format: double
numberUsers:
type: number
format: double
required:
- chartViews
- userMostViewedDashboards
- dashboardViews
- chartWeeklyAverageQueries
- chartWeeklyQueryingUsers
- tableNoQueries
- tableMostCreatedCharts
- tableMostQueries
- numberWeeklyQueryingUsers
- numberAdmins
- numberEditors
- numberInteractiveViewers
- numberViewers
- numberUsers
type: object
ApiUserActivity:
properties:
results:
$ref: '#/components/schemas/UserActivity'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUserActivityDownloadCsv:
properties:
status:
type: string
enum:
- ok
nullable: false
results:
type: string
required:
- status
- results
type: object
DownloadAuditEntry:
properties:
originalQueryContext:
type: string
nullable: true
downloadedAt:
type: string
format: date-time
fileType:
type: string
userLastName:
type: string
nullable: true
userFirstName:
type: string
nullable: true
userUuid:
type: string
nullable: true
queryUuid:
type: string
downloadUuid:
type: string
required:
- originalQueryContext
- downloadedAt
- fileType
- userLastName
- userFirstName
- userUuid
- queryUuid
- downloadUuid
type: object
DownloadActivityResults:
properties:
pagination:
properties:
nextCursor:
type: string
nullable: true
totalResults:
type: number
format: double
nullable: true
totalPageCount:
type: number
format: double
nullable: true
page:
type: number
format: double
nullable: true
pageSize:
type: number
format: double
required:
- nextCursor
- totalResults
- totalPageCount
- page
- pageSize
type: object
data:
items:
$ref: '#/components/schemas/DownloadAuditEntry'
type: array
required:
- pagination
- data
type: object
ApiDownloadActivity:
properties:
results:
$ref: '#/components/schemas/DownloadActivityResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_SshKeyPair.publicKey_:
properties:
publicKey:
type: string
required:
- publicKey
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiSshKeyPairResponse:
properties:
results:
$ref: '#/components/schemas/Pick_SshKeyPair.publicKey_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
PartitionType:
enum:
- DATE
- RANGE
type: string
PartitionColumn:
properties:
field:
type: string
partitionType:
$ref: '#/components/schemas/PartitionType'
required:
- field
- partitionType
type: object
WarehouseTablesCatalog:
properties: {}
additionalProperties:
properties: {}
additionalProperties:
properties: {}
additionalProperties:
properties:
partitionColumn:
$ref: '#/components/schemas/PartitionColumn'
type: object
type: object
type: object
type: object
ApiWarehouseTablesCatalog:
properties:
results:
$ref: '#/components/schemas/WarehouseTablesCatalog'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
WarehouseTableSchema:
properties: {}
additionalProperties:
$ref: '#/components/schemas/DimensionType'
type: object
ApiWarehouseTableFields:
properties:
results:
$ref: '#/components/schemas/WarehouseTableSchema'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
SqlRunnerBody:
properties:
limit:
type: number
format: double
sql:
type: string
required:
- sql
type: object
PivotIndexColum:
properties:
type:
$ref: '#/components/schemas/VizIndexType'
reference:
type: string
required:
- type
- reference
type: object
ValuesColumn:
properties:
aggregation:
$ref: '#/components/schemas/VizAggregationOptions'
reference:
type: string
required:
- aggregation
- reference
type: object
GroupByColumn:
properties:
reference:
type: string
required:
- reference
type: object
SortBy:
items:
$ref: '#/components/schemas/VizSortBy'
type: array
PivotConfiguration:
properties:
pivotColumnsOrder:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
description: 'Declared order of the pivot-column dimensions (visible `groupByColumns`
plus hidden `sortOnlyDimensions`) as they appear in the chart''s
`pivotConfig.columns`. `column_ranking` orders columns by this sequence
so
a hidden sort-only dim sorts at its DECLARED position — hiding a dim then
leaves column order identical to when it was visible, instead of hoisting
the hidden dim to the front of the ORDER BY. Passthrough (hidden, non-sort)
dims are excluded since they don''t drive sort. When omitted, ordering
falls
back to hoisting sort-only sort targets to the front (legacy behavior).'
passthroughDimensions:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
description: 'Hidden pivot-column dimensions that are NOT sort targets but
still need
their values carried through the SQL pipeline so that other fields''
`richText` / `image:` templates can reference them via
`row.
..raw`. They participate in `group_by_query` SELECT
and GROUP BY (same as sortOnlyDimensions) but do NOT affect
`column_ranking` ORDER BY (they don''t drive sort). Without this bucket
the dim would be dropped entirely from the query and `row.*.raw`
references would silently resolve to undefined.'
sortOnlyDimensions:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
description: 'Dimensions referenced by ORDER BY but NOT spread into pivot
columns.
Used when a user hides a dim that''s part of `pivotConfig.columns` and
has
a sort entry on it: the dim still ranks column order via the GROUP BY
/
ORDER BY pipeline, but it doesn''t become a pivot column header level.
Mirrors `sortOnlyColumns` (which serves the same purpose for metrics).'
sortOnlyColumns:
items:
$ref: '#/components/schemas/ValuesColumn'
type: array
description: 'Metrics/table calculations needed for sort anchor CTEs but
not for display.
These are merged into valuesColumns for SQL generation in PivotQueryBuilder,
but excluded from pivotDetails so they don''t appear as chart series.'
metricsAsRows:
type: boolean
description: 'When true, metrics are displayed as rows instead of columns.
This affects column limit calculation - when metrics are rows,
we don''t need to divide the column limit by the number of metrics.
Defaults to false for backward compatibility (SQL runner behavior).'
sortBy:
$ref: '#/components/schemas/SortBy'
groupByColumns:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
valuesColumns:
items:
$ref: '#/components/schemas/ValuesColumn'
type: array
indexColumn:
anyOf:
- $ref: '#/components/schemas/PivotIndexColum'
- items:
$ref: '#/components/schemas/PivotIndexColum'
type: array
required:
- valuesColumns
type: object
ApiSqlRunnerPivotQueryPayload:
allOf:
- $ref: '#/components/schemas/PivotConfiguration'
- properties:
savedSqlUuid:
type: string
type: object
SqlRunnerPivotQueryBody:
allOf:
- $ref: '#/components/schemas/SqlRunnerBody'
- $ref: '#/components/schemas/ApiSqlRunnerPivotQueryPayload'
ApiCreateSqlChart:
properties:
results:
properties:
slug:
type: string
savedSqlUuid:
type: string
required:
- slug
- savedSqlUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
VizBarChartConfig:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- properties:
display:
$ref: '#/components/schemas/CartesianChartDisplay'
fieldConfig:
$ref: '#/components/schemas/PivotChartLayout'
type:
$ref: '#/components/schemas/ChartKind.VERTICAL_BAR'
required:
- type
type: object
VizLineChartConfig:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- properties:
display:
$ref: '#/components/schemas/CartesianChartDisplay'
fieldConfig:
$ref: '#/components/schemas/PivotChartLayout'
type:
$ref: '#/components/schemas/ChartKind.LINE'
required:
- type
type: object
AllVizChartConfig:
anyOf:
- $ref: '#/components/schemas/VizBarChartConfig'
- $ref: '#/components/schemas/VizLineChartConfig'
- $ref: '#/components/schemas/VizPieChartConfig'
- $ref: '#/components/schemas/VizTableConfig'
CreateSqlChart:
properties:
slug:
type: string
spaceUuid:
type: string
config:
$ref: '#/components/schemas/AllVizChartConfig'
limit:
type: number
format: double
sql:
type: string
description:
type: string
nullable: true
name:
type: string
required:
- spaceUuid
- config
- limit
- sql
- description
- name
type: object
ApiUpdateSqlChart:
properties:
results:
properties:
savedSqlVersionUuid:
type: string
nullable: true
savedSqlUuid:
type: string
required:
- savedSqlVersionUuid
- savedSqlUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpdateUnversionedSqlChart:
properties:
spaceUuid:
type: string
description:
type: string
nullable: true
name:
type: string
required:
- spaceUuid
- description
- name
type: object
UpdateVersionedSqlChart:
properties:
config:
$ref: '#/components/schemas/AllVizChartConfig'
limit:
type: number
format: double
sql:
type: string
required:
- config
- limit
- sql
type: object
UpdateSqlChart:
properties:
versionedData:
$ref: '#/components/schemas/UpdateVersionedSqlChart'
unversionedData:
$ref: '#/components/schemas/UpdateUnversionedSqlChart'
type: object
PromotionAction:
enum:
- no changes
- create
- update
- delete
type: string
? Pick_Space.organizationUuid-or-projectUuid-or-uuid-or-name-or-inheritParentPermissions-or-projectMemberAccessRole-or-pinnedListUuid-or-pinnedListOrder-or-slug-or-parentSpaceUuid-or-path_
: properties:
name:
type: string
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
inheritParentPermissions:
type: boolean
projectMemberAccessRole:
allOf:
- $ref: '#/components/schemas/SpaceMemberRole'
nullable: true
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
slug:
type: string
parentSpaceUuid:
type: string
nullable: true
path:
type: string
required:
- name
- projectUuid
- organizationUuid
- uuid
- inheritParentPermissions
- projectMemberAccessRole
- pinnedListUuid
- pinnedListOrder
- slug
- parentSpaceUuid
- path
type: object
description: From T, pick a set of properties whose keys are in the union K
SpaceSummaryBase:
allOf:
- $ref: '#/components/schemas/Pick_Space.organizationUuid-or-projectUuid-or-uuid-or-name-or-inheritParentPermissions-or-projectMemberAccessRole-or-pinnedListUuid-or-pinnedListOrder-or-slug-or-parentSpaceUuid-or-path_'
- properties:
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
deletedAt:
type: string
format: date-time
appCount:
type: number
format: double
childSpaceCount:
type: number
format: double
dashboardCount:
type: number
format: double
chartCount:
type: number
format: double
required:
- appCount
- childSpaceCount
- dashboardCount
- chartCount
type: object
PromotedSpace:
$ref: '#/components/schemas/SpaceSummaryBase'
Pick_Dashboard.Exclude_keyofDashboard.inheritsFromOrgOrProject-or-access__:
properties:
description:
type: string
name:
type: string
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
parameters:
$ref: '#/components/schemas/DashboardParameters'
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
slug:
type: string
updatedAt:
type: string
format: date-time
versionUuid:
type: string
spaceUuid:
type: string
dashboardVersionId:
type: number
format: double
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
tiles:
items:
$ref: '#/components/schemas/DashboardTile'
type: array
filters:
$ref: '#/components/schemas/DashboardFilters'
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
spaceName:
type: string
views:
type: number
format: double
firstViewedAt:
anyOf:
- type: string
- type: string
format: date-time
nullable: true
tabs:
items:
$ref: '#/components/schemas/DashboardTab'
type: array
config:
$ref: '#/components/schemas/DashboardConfig'
colorPaletteUuid:
type: string
nullable: true
deletedAt:
type: string
format: date-time
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
required:
- name
- projectUuid
- organizationUuid
- uuid
- pinnedListUuid
- pinnedListOrder
- slug
- updatedAt
- versionUuid
- spaceUuid
- dashboardVersionId
- verification
- tiles
- filters
- spaceName
- views
- firstViewedAt
- tabs
- colorPaletteUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Dashboard.inheritsFromOrgOrProject-or-access_:
$ref: '#/components/schemas/Pick_Dashboard.Exclude_keyofDashboard.inheritsFromOrgOrProject-or-access__'
description: Construct a type with the properties of T except for those in type
K.
DashboardDAO:
$ref: '#/components/schemas/Omit_Dashboard.inheritsFromOrgOrProject-or-access_'
PromotedDashboard:
allOf:
- $ref: '#/components/schemas/DashboardDAO'
- properties:
spacePath:
type: string
spaceSlug:
type: string
required:
- spacePath
- spaceSlug
type: object
Pick_SavedChart.Exclude_keyofSavedChart.inheritsFromOrgOrProject-or-access__:
properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
description: Parameter values for the chart query
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
slug:
type: string
description: Unique identifier slug for this chart
updatedAt:
type: string
format: date-time
description: Timestamp when the chart was last updated
chartConfig:
$ref: '#/components/schemas/ChartConfig'
description: Visualization configuration for the chart
spaceUuid:
type: string
dashboardUuid:
type: string
nullable: true
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
spaceName:
type: string
colorPaletteUuid:
type: string
nullable: true
description: 'Chart-level palette override pointer. `null` means inherit
from the
containing dashboard / space / project / org. Writable via
`UpdateSavedChart`.'
deletedAt:
type: string
format: date-time
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
tableName:
type: string
description: The explore/table name this chart queries from
metricQuery:
$ref: '#/components/schemas/MetricQuery'
description: The query configuration defining what data to fetch
pivotConfig:
properties:
columns:
items:
type: string
type: array
required:
- columns
type: object
description: Pivot table configuration
tableConfig:
properties:
columnOrder:
items:
type: string
type: array
required:
- columnOrder
type: object
description: Table view configuration
dashboardName:
type: string
nullable: true
colorPalette:
items:
type: string
type: array
deprecated: true
resolvedColorPalette:
$ref: '#/components/schemas/ResolvedProjectColorPalette'
description: 'Fully resolved palette for this chart, computed from the
org → project → space → dashboard → chart hierarchy. Read-only — set
the chart''s own palette via `colorPaletteUuid`.'
required:
- name
- projectUuid
- organizationUuid
- uuid
- pinnedListUuid
- pinnedListOrder
- slug
- updatedAt
- chartConfig
- spaceUuid
- dashboardUuid
- verification
- spaceName
- colorPaletteUuid
- tableName
- metricQuery
- tableConfig
- dashboardName
- colorPalette
- resolvedColorPalette
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_SavedChart.inheritsFromOrgOrProject-or-access_:
$ref: '#/components/schemas/Pick_SavedChart.Exclude_keyofSavedChart.inheritsFromOrgOrProject-or-access__'
description: Construct a type with the properties of T except for those in type
K.
SavedChartDAO:
$ref: '#/components/schemas/Omit_SavedChart.inheritsFromOrgOrProject-or-access_'
PromotedChart:
allOf:
- $ref: '#/components/schemas/SavedChartDAO'
- properties:
oldUuid:
type: string
spacePath:
type: string
spaceSlug:
type: string
required:
- oldUuid
- spacePath
- spaceSlug
type: object
PromotedSqlChart:
properties:
spacePath:
type: string
spaceSlug:
type: string
description:
type: string
nullable: true
name:
type: string
projectUuid:
type: string
slug:
type: string
oldUuid:
type: string
uuid:
type: string
required:
- spacePath
- spaceSlug
- description
- name
- projectUuid
- slug
- oldUuid
- uuid
type: object
PromotedApp:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
PromotionChanges:
properties:
dataApps:
items:
properties:
data:
$ref: '#/components/schemas/PromotedApp'
action:
$ref: '#/components/schemas/PromotionAction'
required:
- data
- action
type: object
type: array
sqlCharts:
items:
properties:
data:
$ref: '#/components/schemas/PromotedSqlChart'
action:
$ref: '#/components/schemas/PromotionAction'
required:
- data
- action
type: object
type: array
charts:
items:
properties:
data:
$ref: '#/components/schemas/PromotedChart'
action:
$ref: '#/components/schemas/PromotionAction'
required:
- data
- action
type: object
type: array
dashboards:
items:
properties:
data:
$ref: '#/components/schemas/PromotedDashboard'
action:
$ref: '#/components/schemas/PromotionAction'
required:
- data
- action
type: object
type: array
spaces:
items:
properties:
data:
$ref: '#/components/schemas/PromotedSpace'
action:
$ref: '#/components/schemas/PromotionAction'
required:
- data
- action
type: object
type: array
required:
- charts
- dashboards
- spaces
type: object
ApiPromotionChangesResponse:
properties:
results:
$ref: '#/components/schemas/PromotionChanges'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Explore.name_:
properties:
name:
type: string
required:
- name
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiCreateVirtualView:
properties:
results:
$ref: '#/components/schemas/Pick_Explore.name_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
VizColumn:
properties:
type:
$ref: '#/components/schemas/DimensionType'
reference:
type: string
required:
- reference
type: object
CreateVirtualViewPayload:
properties:
parameterValues:
$ref: '#/components/schemas/ParametersValuesMap'
columns:
items:
$ref: '#/components/schemas/VizColumn'
type: array
sql:
type: string
name:
type: string
required:
- columns
- sql
- name
type: object
UpdateVirtualViewPayload:
$ref: '#/components/schemas/CreateVirtualViewPayload'
ApiGithubDbtWritePreview:
properties:
results:
properties:
owner:
type: string
files:
items:
type: string
type: array
path:
type: string
repo:
type: string
url:
type: string
required:
- owner
- files
- path
- repo
- url
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
PullRequestCreated:
properties:
prUrl:
type: string
prTitle:
type: string
required:
- prUrl
- prTitle
type: object
ApiGithubDbtWriteBack:
properties:
results:
$ref: '#/components/schemas/PullRequestCreated'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_SchedulerSlackTarget.channel_:
properties:
channel:
type: string
required:
- channel
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_SchedulerMsTeamsTarget.webhook_:
properties:
webhook:
type: string
required:
- webhook
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_SchedulerGoogleChatTarget.googleChatWebhook_:
properties:
googleChatWebhook:
type: string
required:
- googleChatWebhook
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_SchedulerEmailTarget.recipient_:
properties:
recipient:
type: string
required:
- recipient
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateSchedulerTarget:
anyOf:
- $ref: '#/components/schemas/Pick_SchedulerSlackTarget.channel_'
- $ref: '#/components/schemas/Pick_SchedulerMsTeamsTarget.webhook_'
- $ref: '#/components/schemas/Pick_SchedulerGoogleChatTarget.googleChatWebhook_'
- $ref: '#/components/schemas/Pick_SchedulerEmailTarget.recipient_'
? Pick_CreateSchedulerAndTargets.Exclude_keyofCreateSchedulerAndTargets.savedChartUuid-or-dashboardUuid-or-savedSqlUuid-or-createdBy__
: properties:
name:
type: string
cron:
type: string
projectUuid:
type: string
nullable: true
enabled:
type: boolean
timezone:
type: string
message:
type: string
format:
$ref: '#/components/schemas/SchedulerFormat'
projectSchedulerTimezone:
type: string
appUuid:
type: string
nullable: true
appName:
type: string
nullable: true
options:
$ref: '#/components/schemas/SchedulerOptions'
thresholds:
items:
$ref: '#/components/schemas/ThresholdOptions'
type: array
notificationFrequency:
$ref: '#/components/schemas/NotificationFrequency'
includeLinks:
type: boolean
projectName:
type: string
nullable: true
targets:
items:
$ref: '#/components/schemas/CreateSchedulerTarget'
type: array
required:
- name
- cron
- enabled
- format
- appUuid
- appName
- options
- includeLinks
- targets
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateSchedulerAndTargets.savedChartUuid-or-dashboardUuid-or-savedSqlUuid-or-createdBy_:
$ref: '#/components/schemas/Pick_CreateSchedulerAndTargets.Exclude_keyofCreateSchedulerAndTargets.savedChartUuid-or-dashboardUuid-or-savedSqlUuid-or-createdBy__'
description: Construct a type with the properties of T except for those in type
K.
CreateSchedulerAndTargetsWithoutIds:
$ref: '#/components/schemas/Omit_CreateSchedulerAndTargets.savedChartUuid-or-dashboardUuid-or-savedSqlUuid-or-createdBy_'
SpotlightTableColumns:
enum:
- label
- tableLabel
- description
- categories
- chartUsage
- owner
type: string
ColumnConfig:
items:
properties:
isVisible:
type: boolean
column:
$ref: '#/components/schemas/SpotlightTableColumns'
required:
- isVisible
- column
type: object
type: array
Pick_SpotlightTableConfig.columnConfig_:
properties:
columnConfig:
$ref: '#/components/schemas/ColumnConfig'
required:
- columnConfig
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiGetSpotlightTableConfig:
properties:
results:
$ref: '#/components/schemas/Pick_SpotlightTableConfig.columnConfig_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_SavedChart.uuid-or-name-or-description-or-spaceName-or-spaceUuid-or-projectUuid-or-organizationUuid-or-pinnedListUuid-or-dashboardUuid-or-dashboardName-or-slug_
: properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
pinnedListUuid:
type: string
nullable: true
slug:
type: string
description: Unique identifier slug for this chart
spaceUuid:
type: string
dashboardUuid:
type: string
nullable: true
spaceName:
type: string
dashboardName:
type: string
nullable: true
required:
- name
- projectUuid
- organizationUuid
- uuid
- pinnedListUuid
- slug
- spaceUuid
- dashboardUuid
- spaceName
- dashboardName
type: object
description: From T, pick a set of properties whose keys are in the union K
ChartType:
enum:
- cartesian
- table
- big_number
- pie
- funnel
- treemap
- gauge
- custom
- map
- sankey
type: string
ChartSourceType:
enum:
- dbt_explore
- sql
type: string
ChartSummary:
allOf:
- $ref: '#/components/schemas/Pick_SavedChart.uuid-or-name-or-description-or-spaceName-or-spaceUuid-or-projectUuid-or-organizationUuid-or-pinnedListUuid-or-dashboardUuid-or-dashboardName-or-slug_'
- properties:
source:
$ref: '#/components/schemas/ChartSourceType'
chartKind:
$ref: '#/components/schemas/ChartKind'
chartType:
$ref: '#/components/schemas/ChartType'
type: object
Pick_SavedChart.updatedAt-or-updatedByUser-or-pinnedListOrder_:
properties:
pinnedListOrder:
type: number
format: double
nullable: true
updatedAt:
type: string
format: date-time
description: Timestamp when the chart was last updated
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
required:
- pinnedListOrder
- updatedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
ViewStatistics:
properties:
firstViewedAt:
anyOf:
- type: string
format: date-time
- type: string
nullable: true
views:
type: number
format: double
required:
- firstViewedAt
- views
type: object
Pick_ValidationResponse.error-or-createdAt-or-validationUuid-or-validationId_:
properties:
createdAt:
type: string
format: date-time
error:
type: string
validationUuid:
type: string
validationId:
type: number
format: double
nullable: true
deprecated: true
required:
- createdAt
- error
- validationUuid
- validationId
type: object
description: From T, pick a set of properties whose keys are in the union K
ValidationSummary:
$ref: '#/components/schemas/Pick_ValidationResponse.error-or-createdAt-or-validationUuid-or-validationId_'
SpaceQuery:
allOf:
- $ref: '#/components/schemas/ChartSummary'
- $ref: '#/components/schemas/Pick_SavedChart.updatedAt-or-updatedByUser-or-pinnedListOrder_'
- $ref: '#/components/schemas/ViewStatistics'
- properties:
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
validationErrors:
items:
$ref: '#/components/schemas/ValidationSummary'
type: array
required:
- verification
type: object
? Pick_Dashboard.uuid-or-name-or-description-or-updatedAt-or-projectUuid-or-updatedByUser-or-organizationUuid-or-spaceUuid-or-views-or-firstViewedAt-or-pinnedListUuid-or-pinnedListOrder_
: properties:
description:
type: string
name:
type: string
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
updatedAt:
type: string
format: date-time
spaceUuid:
type: string
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
views:
type: number
format: double
firstViewedAt:
anyOf:
- type: string
- type: string
format: date-time
nullable: true
required:
- name
- projectUuid
- organizationUuid
- uuid
- pinnedListUuid
- pinnedListOrder
- updatedAt
- spaceUuid
- views
- firstViewedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardBasicDetails:
allOf:
- $ref: '#/components/schemas/Pick_Dashboard.uuid-or-name-or-description-or-updatedAt-or-projectUuid-or-updatedByUser-or-organizationUuid-or-spaceUuid-or-views-or-firstViewedAt-or-pinnedListUuid-or-pinnedListOrder_'
- properties:
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
validationErrors:
items:
$ref: '#/components/schemas/ValidationSummary'
type: array
required:
- verification
type: object
SpaceDashboard:
$ref: '#/components/schemas/DashboardBasicDetails'
SpaceAccessUserMetadata:
properties:
isInternal:
type: boolean
email:
type: string
lastName:
type: string
firstName:
type: string
required:
- isInternal
- email
- lastName
- firstName
type: object
SpaceShare:
allOf:
- $ref: '#/components/schemas/SpaceAccess'
- $ref: '#/components/schemas/SpaceAccessUserMetadata'
SpaceGroup:
properties:
spaceRole:
$ref: '#/components/schemas/SpaceMemberRole'
groupName:
type: string
groupUuid:
type: string
required:
- spaceRole
- groupName
- groupUuid
type: object
Space:
properties:
breadcrumbs:
items:
properties:
hasAccess:
type: boolean
uuid:
type: string
name:
type: string
required:
- hasAccess
- uuid
- name
type: object
type: array
path:
type: string
colorPaletteUuid:
type: string
nullable: true
projectMemberAccessRole:
allOf:
- $ref: '#/components/schemas/SpaceMemberRole'
nullable: true
inheritParentPermissions:
type: boolean
parentSpaceUuid:
type: string
nullable: true
childSpaces:
items:
$ref: '#/components/schemas/SpaceSummaryBase'
type: array
slug:
type: string
pinnedListOrder:
type: number
format: double
nullable: true
pinnedListUuid:
type: string
nullable: true
groupsAccess:
items:
$ref: '#/components/schemas/SpaceGroup'
type: array
access:
items:
$ref: '#/components/schemas/SpaceShare'
type: array
dashboards:
items:
$ref: '#/components/schemas/SpaceDashboard'
type: array
projectUuid:
type: string
queries:
items:
$ref: '#/components/schemas/SpaceQuery'
type: array
inheritsFromOrgOrProject:
type: boolean
name:
type: string
uuid:
type: string
organizationUuid:
type: string
required:
- path
- colorPaletteUuid
- projectMemberAccessRole
- inheritParentPermissions
- parentSpaceUuid
- childSpaces
- slug
- pinnedListOrder
- pinnedListUuid
- groupsAccess
- access
- dashboards
- projectUuid
- queries
- inheritsFromOrgOrProject
- name
- uuid
- organizationUuid
type: object
ApiSpaceResponse:
properties:
results:
$ref: '#/components/schemas/Space'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
SpaceDeleteImpact:
properties:
appCount:
type: number
format: double
dashboardCount:
type: number
format: double
chartCount:
type: number
format: double
apps:
items:
properties:
spaceUuid:
type: string
nullable: true
uuid:
type: string
required:
- spaceUuid
- uuid
type: object
type: array
dashboards:
items:
properties:
spaceUuid:
type: string
name:
type: string
uuid:
type: string
required:
- spaceUuid
- name
- uuid
type: object
type: array
charts:
items:
properties:
spaceUuid:
type: string
name:
type: string
uuid:
type: string
required:
- spaceUuid
- name
- uuid
type: object
type: array
spaces:
items:
properties:
appCount:
type: number
format: double
dashboardCount:
type: number
format: double
chartCount:
type: number
format: double
parentSpaceUuid:
type: string
nullable: true
name:
type: string
uuid:
type: string
required:
- appCount
- dashboardCount
- chartCount
- parentSpaceUuid
- name
- uuid
type: object
type: array
required:
- appCount
- dashboardCount
- chartCount
- apps
- dashboards
- charts
- spaces
type: object
ApiSpaceDeleteImpactResponse:
properties:
results:
$ref: '#/components/schemas/SpaceDeleteImpact'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_SpaceShare.userUuid-or-role_:
properties:
userUuid:
type: string
role:
$ref: '#/components/schemas/SpaceMemberRole'
required:
- userUuid
- role
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateSpace:
properties:
parentSpaceUuid:
type: string
access:
items:
$ref: '#/components/schemas/Pick_SpaceShare.userUuid-or-role_'
type: array
inheritParentPermissions:
type: boolean
name:
type: string
required:
- name
type: object
UpdateSpace:
properties:
colorPaletteUuid:
type: string
nullable: true
projectMemberAccessRole:
allOf:
- $ref: '#/components/schemas/SpaceMemberRole'
nullable: true
description: When set, all project members get this role on the space
inheritParentPermissions:
type: boolean
name:
type: string
required:
- name
type: object
AddSpaceUserAccess:
properties:
spaceRole:
$ref: '#/components/schemas/SpaceMemberRole'
userUuid:
type: string
required:
- spaceRole
- userUuid
type: object
AddSpaceGroupAccess:
properties:
spaceRole:
$ref: '#/components/schemas/SpaceMemberRole'
groupUuid:
type: string
required:
- spaceRole
- groupUuid
type: object
SlackChannel:
properties:
name:
type: string
id:
type: string
required:
- name
- id
type: object
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
ApiSlackChannelsResponse:
$ref: '#/components/schemas/ApiSuccess_SlackChannel-Array-or-undefined_'
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
ApiSlackChannelResponse:
$ref: '#/components/schemas/ApiSuccess_SlackChannel-or-null_'
ApiSlackCustomSettingsResponse:
$ref: '#/components/schemas/ApiSuccessEmpty'
SlackChannelProjectMapping:
properties:
availableTags:
items:
type: string
type: array
nullable: true
slackChannelId:
type: string
projectUuid:
type: string
required:
- availableTags
- slackChannelId
- projectUuid
type: object
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
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
ApiSuccess_SlackSettings-or-undefined_:
properties:
results:
$ref: '#/components/schemas/SlackSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
ApiSlackGetInstallationResponse:
$ref: '#/components/schemas/ApiSuccess_SlackSettings-or-undefined_'
ShareUrl:
properties:
host:
type: string
url:
type: string
shareUrl:
type: string
organizationUuid:
type: string
format: uuid
createdByUserUuid:
type: string
format: uuid
params:
type: string
path:
type: string
description: The URL path of the full URL
nanoid:
type: string
description: Unique shareable id
required:
- params
- path
- nanoid
type: object
description: 'A ShareUrl maps a short shareable id to a full URL
in the Lightdash UI. This allows very long URLs
to be represented by short ids.'
ApiShareResponse:
properties:
results:
$ref: '#/components/schemas/ShareUrl'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_ShareUrl.path-or-params_:
properties:
path:
type: string
description: The URL path of the full URL
params:
type: string
required:
- path
- params
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateShareUrl:
$ref: '#/components/schemas/Pick_ShareUrl.path-or-params_'
description: Contains the detail of a full URL to generate a short URL id
SchedulerTaskName:
type: string
enum:
- slackAiPrompt
- aiAgentEvalResult
- aiAgentReviewClassifier
- aiAgentReviewWriteback
- aiAgentReviewRemediationPreview
- aiAgentReviewRemediationCompile
- aiAgentReviewRemediationRun
- embedArtifactVersion
- generateArtifactQuestion
- appGeneratePipeline
- sweepStaleAppLocks
- handleScheduledDelivery
- sendSlackNotification
- sendEmailNotification
- sendMsTeamsNotification
- sendGoogleChatNotification
- sendSlackBatchNotification
- sendEmailBatchNotification
- sendMsTeamsBatchNotification
- sendGoogleChatBatchNotification
- uploadGsheets
- uploadGsheetFromQuery
- validateProject
- compileProject
- createProjectWithCompile
- testAndCompileProject
- sqlRunner
- sqlRunnerPivotQuery
- replaceCustomFields
- indexCatalog
- generateDailyJobs
- exportCsvDashboard
- renameResources
- materializePreAggregate
- cleanQueryHistory
- downloadAsyncQueryResults
- syncSlackChannels
- generateSlackChannelSyncJobs
- checkForStuckJobs
- cleanDeploySessions
- managedAgentHeartbeat
- cleanExpiredPreviews
- ingestProjectContext
BaseSchedulerLog:
properties:
createdAt:
type: string
format: date-time
scheduledTime:
type: string
format: date-time
status:
$ref: '#/components/schemas/SchedulerJobStatus'
task:
$ref: '#/components/schemas/SchedulerTaskName'
jobId:
type: string
required:
- createdAt
- scheduledTime
- status
- task
- jobId
type: object
SchedulerTargetType:
type: string
enum:
- email
- slack
- gsheets
- msteams
- googlechat
PartialFailureType.DASHBOARD_CHART:
enum:
- dashboard_chart
type: string
DashboardChartPartialFailure:
properties:
error:
type: string
tileUuid:
type: string
chartName:
type: string
chartUuid:
type: string
type:
$ref: '#/components/schemas/PartialFailureType.DASHBOARD_CHART'
required:
- error
- tileUuid
- chartName
- chartUuid
- type
type: object
PartialFailureType.DASHBOARD_SQL_CHART:
enum:
- dashboard_sql_chart
type: string
DashboardSqlChartPartialFailure:
properties:
error:
type: string
tileUuid:
type: string
chartName:
type: string
savedSqlUuid:
type: string
type:
$ref: '#/components/schemas/PartialFailureType.DASHBOARD_SQL_CHART'
required:
- error
- tileUuid
- chartName
- savedSqlUuid
- type
type: object
PartialFailureType.MISSING_TARGETS:
enum:
- missing_targets
type: string
MissingTargetsPartialFailure:
properties:
type:
$ref: '#/components/schemas/PartialFailureType.MISSING_TARGETS'
required:
- type
type: object
PartialFailure:
anyOf:
- $ref: '#/components/schemas/DashboardChartPartialFailure'
- $ref: '#/components/schemas/DashboardSqlChartPartialFailure'
- $ref: '#/components/schemas/MissingTargetsPartialFailure'
ThresholdStatus:
description: 'Outcome of evaluating a threshold-alert scheduler against the
latest query results.
Emitted on `SchedulerDetails.thresholdStatus` and on the `scheduler_job.completed`
analytics event so downstream consumers (UI toasts, dashboards) can branch
reliably.'
enum:
- met
- not_met
type: string
SchedulerDetails:
properties:
thresholdStatus:
$ref: '#/components/schemas/ThresholdStatus'
description: Set when a threshold-alert scheduler completed without sending
a notification because the threshold was not met.
partialFailures:
items:
$ref: '#/components/schemas/PartialFailure'
type: array
description: Partial failures that occurred during the scheduled delivery
(e.g., some charts failed in a dashboard export)
createdByUserUuid:
type: string
organizationUuid:
type: string
projectUuid:
type: string
additionalProperties:
$ref: '#/components/schemas/AnyType'
type: object
SchedulerLog:
allOf:
- $ref: '#/components/schemas/BaseSchedulerLog'
- properties:
details:
$ref: '#/components/schemas/SchedulerDetails'
targetType:
$ref: '#/components/schemas/SchedulerTargetType'
target:
type: string
jobGroup:
type: string
schedulerUuid:
type: string
required:
- details
type: object
SchedulerWithLogs:
properties:
logs:
items:
$ref: '#/components/schemas/SchedulerLog'
type: array
dashboards:
items:
properties:
dashboardUuid:
type: string
name:
type: string
required:
- dashboardUuid
- name
type: object
type: array
charts:
items:
properties:
savedChartUuid:
type: string
name:
type: string
required:
- savedChartUuid
- name
type: object
type: array
users:
items:
properties:
userUuid:
type: string
lastName:
type: string
firstName:
type: string
required:
- userUuid
- lastName
- firstName
type: object
type: array
schedulers:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
required:
- logs
- dashboards
- charts
- users
- schedulers
type: object
KnexPaginatedData_SchedulerWithLogs_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
$ref: '#/components/schemas/SchedulerWithLogs'
required:
- data
type: object
ApiSuccess_KnexPaginatedData_SchedulerWithLogs__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SchedulerWithLogs_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSchedulerLogsResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_SchedulerWithLogs__'
KnexPaginatedData_SchedulerRun-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/SchedulerRun'
type: array
required:
- data
type: object
ApiSuccess_KnexPaginatedData_SchedulerRun-Array__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SchedulerRun-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSchedulerRunsResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_SchedulerRun-Array__'
SchedulerRunLog:
allOf:
- $ref: '#/components/schemas/BaseSchedulerLog'
- properties:
isParent:
type: boolean
details:
allOf:
- $ref: '#/components/schemas/SchedulerDetails'
nullable: true
targetType:
allOf:
- $ref: '#/components/schemas/SchedulerTargetType'
nullable: true
target:
type: string
nullable: true
jobGroup:
type: string
required:
- isParent
- details
- targetType
- target
- jobGroup
type: object
SchedulerRunLogsResponse:
properties:
createdByUserName:
type: string
createdByUserUuid:
type: string
resourceName:
type: string
resourceUuid:
type: string
resourceType:
$ref: '#/components/schemas/SchedulerResourceType'
logs:
items:
$ref: '#/components/schemas/SchedulerRunLog'
type: array
scheduledTime:
type: string
format: date-time
schedulerName:
type: string
schedulerUuid:
type: string
runId:
type: string
required:
- createdByUserName
- createdByUserUuid
- resourceName
- resourceUuid
- resourceType
- logs
- scheduledTime
- schedulerName
- schedulerUuid
- runId
type: object
ApiSuccess_SchedulerRunLogsResponse_:
properties:
results:
$ref: '#/components/schemas/SchedulerRunLogsResponse'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSchedulerRunLogsResponse:
$ref: '#/components/schemas/ApiSuccess_SchedulerRunLogsResponse_'
KnexPaginatedData_SchedulerAndTargets-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
required:
- data
type: object
ApiSuccess_KnexPaginatedData_SchedulerAndTargets-Array__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SchedulerAndTargets-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSchedulersResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_SchedulerAndTargets-Array__'
ApiSuccess_SchedulerAndTargets-Array_:
properties:
results:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiReassignSchedulerOwnerResponse:
$ref: '#/components/schemas/ApiSuccess_SchedulerAndTargets-Array_'
ReassignSchedulerOwnerRequest:
properties:
newOwnerUserUuid:
type: string
schedulerUuids:
items:
type: string
type: array
required:
- newOwnerUserUuid
- schedulerUuids
type: object
ScheduledJobs:
properties:
id:
type: string
date:
type: string
format: date-time
required:
- id
- date
type: object
ApiScheduledJobsResponse:
properties:
results:
items:
$ref: '#/components/schemas/ScheduledJobs'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiJobStatusResponse:
properties:
results:
properties:
details:
allOf:
- $ref: '#/components/schemas/Record_string.AnyType_'
nullable: true
status:
$ref: '#/components/schemas/SchedulerJobStatus'
required:
- details
- status
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiTestSchedulerResponse:
properties:
results:
properties:
jobId:
type: string
required:
- jobId
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
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
Pick_ChartVersion.chartUuid-or-versionUuid-or-createdAt-or-createdBy_:
properties:
createdAt:
type: string
format: date-time
versionUuid:
type: string
chartUuid:
type: string
createdBy:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
required:
- createdAt
- versionUuid
- chartUuid
- createdBy
type: object
description: From T, pick a set of properties whose keys are in the union K
ChartVersionSummary:
$ref: '#/components/schemas/Pick_ChartVersion.chartUuid-or-versionUuid-or-createdAt-or-createdBy_'
ChartHistory:
properties:
history:
items:
$ref: '#/components/schemas/ChartVersionSummary'
type: array
required:
- history
type: object
ApiGetChartHistoryResponse:
properties:
results:
$ref: '#/components/schemas/ChartHistory'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ChartVersion:
properties:
chart:
$ref: '#/components/schemas/SavedChart'
createdBy:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
createdAt:
type: string
format: date-time
versionUuid:
type: string
chartUuid:
type: string
required:
- chart
- createdBy
- createdAt
- versionUuid
- chartUuid
type: object
ApiGetChartVersionResponse:
properties:
results:
$ref: '#/components/schemas/ChartVersion'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPromoteChartResponse:
properties:
results:
$ref: '#/components/schemas/SavedChartDAO'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSavedChartSchedulersResponse:
properties:
results:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateSavedChartSchedulerResponse:
properties:
results:
$ref: '#/components/schemas/SchedulerAndTargets'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiExportChartImageResponse:
properties:
results:
type: string
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiContentVerificationResponse:
properties:
results:
$ref: '#/components/schemas/ContentVerificationInfo'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiContentVerificationDeleteResponse:
properties:
results: {}
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
RenameType:
enum:
- model
- field
type: string
ApiRenameBody:
properties:
model:
type: string
dryRun:
type: boolean
type:
$ref: '#/components/schemas/RenameType'
from:
type: string
to:
type: string
required:
- type
- from
- to
type: object
RenameChange:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
ApiRenameResponse:
properties:
results:
properties:
dashboardSchedulers:
items:
$ref: '#/components/schemas/RenameChange'
type: array
alerts:
items:
$ref: '#/components/schemas/RenameChange'
type: array
dashboards:
items:
$ref: '#/components/schemas/RenameChange'
type: array
charts:
items:
$ref: '#/components/schemas/RenameChange'
type: array
required:
- dashboardSchedulers
- alerts
- dashboards
- charts
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRenameChartResponse:
properties:
results:
properties:
jobId:
type: string
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRenameChartBody:
properties:
fixAll:
type: boolean
type:
$ref: '#/components/schemas/RenameType'
to:
type: string
from:
type: string
required:
- type
- to
- from
type: object
ApiRenameFieldsResponse:
properties:
results:
properties:
fields:
properties: {}
additionalProperties:
items:
type: string
type: array
type: object
required:
- fields
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRenameDashboardResponse:
properties:
results:
properties:
jobId:
type: string
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRenameDashboardBody:
properties:
fixAll:
type: boolean
type:
$ref: '#/components/schemas/RenameType'
to:
type: string
from:
type: string
required:
- type
- to
- from
type: object
PullRequestSource:
enum:
- custom_metric
- custom_dimension
- sql_runner
- source_editor
- ai_agent
type: string
PullRequestReviewContext:
properties:
sourceAgentUuid:
type: string
sourceProjectUuid:
type: string
sourceThreadUuid:
type: string
sourceFindingUuid:
type: string
primaryRootCause:
$ref: '#/components/schemas/AiAgentRootCause'
reviewStatus:
$ref: '#/components/schemas/AiAgentReviewItemStatus'
reviewTitle:
type: string
reviewItemFingerprint:
type: string
reviewItemUuid:
type: string
required:
- sourceAgentUuid
- sourceProjectUuid
- sourceThreadUuid
- sourceFindingUuid
- primaryRootCause
- reviewStatus
- reviewTitle
- reviewItemFingerprint
- reviewItemUuid
type: object
PullRequest:
properties:
createdAt:
type: string
format: date-time
reviewContext:
allOf:
- $ref: '#/components/schemas/PullRequestReviewContext'
nullable: true
description: 'Source review context for AI review remediation PRs. Present
when the PR
was opened to address a review finding.'
aiAgentUuid:
type: string
nullable: true
description: 'The AI agent that owns the thread above. Paired with `aiThreadUuid`
to
build the in-app thread link. Null whenever `aiThreadUuid` is null.'
aiThreadUuid:
type: string
nullable: true
description: 'The AI thread that produced this PR, when it originated from
an AI
write-back (source `ai_agent`). Null for non-AI PRs, or in deployments
without the enterprise AI write-back feature.'
summary:
type: string
nullable: true
description: 'Two-line user-facing "what this PR does", written by the AI
write-back
agent at PR creation. Null for non-AI PRs and PRs predating the field
—
consumers fall back to the live PR title.'
prUrl:
type: string
prNumber:
type: number
format: double
repo:
type: string
owner:
type: string
source:
$ref: '#/components/schemas/PullRequestSource'
provider:
$ref: '#/components/schemas/PullRequestProvider'
createdByUserUuid:
type: string
nullable: true
projectUuid:
type: string
organizationUuid:
type: string
pullRequestUuid:
type: string
required:
- createdAt
- reviewContext
- aiAgentUuid
- aiThreadUuid
- summary
- prUrl
- prNumber
- repo
- owner
- source
- provider
- createdByUserUuid
- projectUuid
- organizationUuid
- pullRequestUuid
type: object
description: 'A pull request created by a write-back. Only immutable identifiers
are
persisted; the live title/state are resolved at runtime from the
GitHub/GitLab API using provider + owner + repo + prNumber.'
PullRequestState:
enum:
- open
- closed
- merged
type: string
PullRequestWithStatus:
allOf:
- $ref: '#/components/schemas/PullRequest'
- properties:
state:
allOf:
- $ref: '#/components/schemas/PullRequestState'
nullable: true
title:
type: string
nullable: true
required:
- state
- title
type: object
description: 'A stored pull request enriched with its live title/state resolved
from the
provider API. `title`/`state` are null when the live lookup fails (e.g. the
PR was deleted or the token lost access) — `prUrl` always remains usable.'
KnexPaginatedData_PullRequestWithStatus-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/PullRequestWithStatus'
type: array
required:
- data
type: object
ApiPullRequestsResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_PullRequestWithStatus-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DbtProjectType.DBT:
enum:
- dbt
type: string
DbtProjectEnvironmentVariable:
properties:
value:
type: string
key:
type: string
required:
- value
- key
type: object
DbtProjectType:
enum:
- dbt
- dbt_cloud_ide
- github
- gitlab
- bitbucket
- azure_devops
- none
- manifest
type: string
DbtLocalProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.DBT'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
profiles_dir:
type: string
project_dir:
type: string
required:
- type
type: object
additionalProperties: true
DbtProjectType.DBT_CLOUD_IDE:
enum:
- dbt_cloud_ide
type: string
DbtCloudIDEProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.DBT_CLOUD_IDE'
api_key:
type: string
environment_id:
type: string
discovery_api_endpoint:
type: string
tags:
items:
type: string
type: array
required:
- type
- api_key
- environment_id
type: object
additionalProperties: true
DbtProjectType.GITHUB:
enum:
- github
type: string
DbtGithubProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.GITHUB'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
authorization_method:
type: string
enum:
- personal_access_token
- installation_id
personal_access_token:
type: string
installation_id:
type: string
repository:
type: string
branch:
type: string
project_sub_path:
type: string
host_domain:
type: string
required:
- type
- authorization_method
- repository
- branch
- project_sub_path
type: object
additionalProperties: true
DbtProjectType.BITBUCKET:
enum:
- bitbucket
type: string
DbtBitBucketProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.BITBUCKET'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
username:
type: string
personal_access_token:
type: string
repository:
type: string
branch:
type: string
project_sub_path:
type: string
host_domain:
type: string
required:
- type
- username
- personal_access_token
- repository
- branch
- project_sub_path
type: object
additionalProperties: true
DbtProjectType.GITLAB:
enum:
- gitlab
type: string
DbtGitlabProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.GITLAB'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
personal_access_token:
type: string
repository:
type: string
branch:
type: string
project_sub_path:
type: string
host_domain:
type: string
required:
- type
- personal_access_token
- repository
- branch
- project_sub_path
type: object
additionalProperties: true
DbtProjectType.AZURE_DEVOPS:
enum:
- azure_devops
type: string
DbtAzureDevOpsProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.AZURE_DEVOPS'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
personal_access_token:
type: string
organization:
type: string
project:
type: string
repository:
type: string
branch:
type: string
project_sub_path:
type: string
required:
- type
- personal_access_token
- organization
- project
- repository
- branch
- project_sub_path
type: object
additionalProperties: true
DbtProjectType.NONE:
enum:
- none
type: string
DbtNoneProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.NONE'
target:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
selector:
type: string
hideRefreshButton:
type: boolean
required:
- type
type: object
additionalProperties: true
DbtProjectType.MANIFEST:
enum:
- manifest
type: string
DbtManifestProjectConfig:
properties:
type:
$ref: '#/components/schemas/DbtProjectType.MANIFEST'
manifest:
type: string
hideRefreshButton:
type: boolean
required:
- type
- manifest
- hideRefreshButton
type: object
additionalProperties: true
DbtProjectConfig:
anyOf:
- $ref: '#/components/schemas/DbtLocalProjectConfig'
- $ref: '#/components/schemas/DbtCloudIDEProjectConfig'
- $ref: '#/components/schemas/DbtGithubProjectConfig'
- $ref: '#/components/schemas/DbtBitBucketProjectConfig'
- $ref: '#/components/schemas/DbtGitlabProjectConfig'
- $ref: '#/components/schemas/DbtAzureDevOpsProjectConfig'
- $ref: '#/components/schemas/DbtNoneProjectConfig'
- $ref: '#/components/schemas/DbtManifestProjectConfig'
SupportedDbtVersions:
enum:
- v1.4
- v1.5
- v1.6
- v1.7
- v1.8
- v1.9
- v1.10
- v1.11
type: string
DbtVersionOptionLatest:
enum:
- latest
type: string
DbtVersionOption:
anyOf:
- $ref: '#/components/schemas/SupportedDbtVersions'
- $ref: '#/components/schemas/DbtVersionOptionLatest'
ProjectDefaults:
properties:
case_sensitive:
type: boolean
description: 'Default case sensitivity for string filters across the project.
When false, all string filters will be case insensitive by default.
Can be overridden at explore or field level.
Defaults to true if not specified.'
type: object
description: Project-wide default settings that can be overridden at explore
or field level
Project:
properties:
expiresAt:
type: string
format: date-time
nullable: true
colorPaletteUuid:
type: string
nullable: true
projectDefaults:
$ref: '#/components/schemas/ProjectDefaults'
hasDefaultUserSpaces:
type: boolean
organizationWarehouseCredentialsUuid:
type: string
createdByUserUuid:
type: string
nullable: true
schedulerFailureContactOverride:
type: string
nullable: true
schedulerFailureIncludeContact:
type: boolean
schedulerFailureNotifyRecipients:
type: boolean
useProjectTimezoneInFilters:
type: boolean
queryTimezone:
type: string
nullable: true
schedulerTimezone:
type: string
dbtVersion:
$ref: '#/components/schemas/DbtVersionOption'
upstreamProjectUuid:
type: string
pinnedListUuid:
type: string
warehouseConnection:
$ref: '#/components/schemas/WarehouseCredentials'
dbtConnection:
$ref: '#/components/schemas/DbtProjectConfig'
type:
$ref: '#/components/schemas/ProjectType'
name:
type: string
projectUuid:
type: string
organizationUuid:
type: string
required:
- expiresAt
- colorPaletteUuid
- hasDefaultUserSpaces
- createdByUserUuid
- schedulerFailureContactOverride
- schedulerFailureIncludeContact
- schedulerFailureNotifyRecipients
- useProjectTimezoneInFilters
- queryTimezone
- schedulerTimezone
- dbtVersion
- dbtConnection
- type
- name
- projectUuid
- organizationUuid
type: object
ApiProjectResponse:
properties:
results:
$ref: '#/components/schemas/Project'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiChartListResponse:
properties:
results:
items:
$ref: '#/components/schemas/SpaceQuery'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiChartSummaryListResponse:
properties:
results:
items:
$ref: '#/components/schemas/ChartSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
SpaceSummary:
allOf:
- $ref: '#/components/schemas/SpaceSummaryBase'
- properties:
access:
items:
type: string
type: array
userAccess:
$ref: '#/components/schemas/SpaceAccess'
inheritsFromOrgOrProject:
type: boolean
required:
- access
- inheritsFromOrgOrProject
type: object
ApiSpaceSummaryListResponse:
properties:
results:
items:
$ref: '#/components/schemas/SpaceSummary'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ProjectMemberProfile:
properties:
lastName:
type: string
firstName:
type: string
email:
type: string
roleUuid:
type: string
role:
$ref: '#/components/schemas/ProjectMemberRole'
projectUuid:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- email
- role
- projectUuid
- userUuid
type: object
ApiProjectAccessListResponse:
properties:
results:
items:
$ref: '#/components/schemas/ProjectMemberProfile'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetProjectMemberResponse:
properties:
results:
$ref: '#/components/schemas/ProjectMemberProfile'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateProjectMember:
properties:
sendEmail:
type: boolean
role:
$ref: '#/components/schemas/ProjectMemberRole'
email:
type: string
required:
- sendEmail
- role
- email
type: object
DataTimezonePreviewNaive:
properties:
rendered:
type: string
readAs:
type: string
raw:
type: string
interpretedAs:
type: string
required:
- rendered
- readAs
- raw
- interpretedAs
type: object
DataTimezonePreviewAware:
properties:
rendered:
type: string
raw:
type: string
required:
- rendered
- raw
type: object
ApiDataTimezonePreviewResults:
properties:
aware:
$ref: '#/components/schemas/DataTimezonePreviewAware'
naive:
$ref: '#/components/schemas/DataTimezonePreviewNaive'
dataTimezoneApplies:
type: boolean
projectTimezone:
type: string
required:
- aware
- naive
- dataTimezoneApplies
- projectTimezone
type: object
ApiDataTimezonePreview:
properties:
results:
$ref: '#/components/schemas/ApiDataTimezonePreviewResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DataTimezonePreviewRequest:
anyOf:
- properties:
credentials:
$ref: '#/components/schemas/CreateWarehouseCredentials'
mode:
type: string
enum:
- create
nullable: false
required:
- credentials
- mode
type: object
- properties:
dataTimezone:
type: string
nullable: true
warehouseType:
$ref: '#/components/schemas/WarehouseTypes'
projectUuid:
type: string
mode:
type: string
enum:
- edit
nullable: false
required:
- dataTimezone
- warehouseType
- projectUuid
- mode
type: object
UpdateProjectMember:
properties:
role:
$ref: '#/components/schemas/ProjectMemberRole'
required:
- role
type: object
ProjectGroupAccess:
properties:
role:
anyOf:
- $ref: '#/components/schemas/ProjectMemberRole'
- allOf:
- type: string
- properties: {}
type: object
groupUuid:
type: string
projectUuid:
type: string
required:
- role
- groupUuid
- projectUuid
type: object
ApiGetProjectGroupAccesses:
properties:
results:
items:
$ref: '#/components/schemas/ProjectGroupAccess'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
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
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
DbtExposureType:
enum:
- dashboard
- notebook
- analysis
- ml
- application
type: string
DbtExposure:
properties:
tags:
items:
type: string
type: array
url:
type: string
description:
type: string
label:
type: string
dependsOn:
items:
type: string
type: array
type:
$ref: '#/components/schemas/DbtExposureType'
owner:
properties:
email:
type: string
name:
type: string
required:
- email
- name
type: object
name:
type: string
required:
- dependsOn
- type
- owner
- name
type: object
Record_string.DbtExposure_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/DbtExposure'
type: object
description: Construct a type with a set of properties K of type T
UpdateMetadata:
properties:
upstreamProjectUuid:
type: string
nullable: true
type: object
UpdateDefaultUserSpaces:
properties:
hasDefaultUserSpaces:
type: boolean
required:
- hasDefaultUserSpaces
type: object
ApiTableGroupsResults:
$ref: '#/components/schemas/Record_string.GroupType_'
ApiSuccess_ApiTableGroupsResults_:
properties:
results:
$ref: '#/components/schemas/ApiTableGroupsResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSuccess_undefined_:
properties:
results: {}
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
ApiProjectColorPaletteResponse:
properties:
results:
$ref: '#/components/schemas/ResolvedProjectColorPalette'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DashboardBasicDetailsWithTileTypes:
allOf:
- $ref: '#/components/schemas/DashboardBasicDetails'
- properties:
tileTypes:
items:
$ref: '#/components/schemas/DashboardTileTypes'
type: array
required:
- tileTypes
type: object
ApiGetDashboardsResponse:
properties:
results:
items:
$ref: '#/components/schemas/DashboardBasicDetailsWithTileTypes'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateDashboardResponse:
properties:
results:
$ref: '#/components/schemas/Dashboard'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DuplicateDashboardParams:
properties:
dashboardDesc:
type: string
dashboardName:
type: string
required:
- dashboardDesc
- dashboardName
type: object
CreateDashboardTileBase:
properties:
tabUuid:
type: string
nullable: true
w:
type: number
format: double
h:
type: number
format: double
y:
type: number
format: double
x:
type: number
format: double
type:
$ref: '#/components/schemas/DashboardTileTypes'
uuid:
type: string
required:
- w
- h
- y
- x
- type
type: object
CreateDashboardChartTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardChartTileProperties'
CreateDashboardMarkdownTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardMarkdownTileProperties'
CreateDashboardLoomTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardLoomTileProperties'
CreateDashboardSqlChartTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardSqlChartTileProperties'
CreateDashboardHeadingTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardHeadingTileProperties'
CreateDashboardDataAppTile:
allOf:
- $ref: '#/components/schemas/CreateDashboardTileBase'
- $ref: '#/components/schemas/DashboardDataAppTileProperties'
Pick_UpdatedByUser.userUuid_:
properties:
userUuid:
type: string
required:
- userUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateDashboard:
properties:
colorPaletteUuid:
type: string
nullable: true
config:
$ref: '#/components/schemas/DashboardConfig'
tabs:
items:
$ref: '#/components/schemas/DashboardTab'
type: array
spaceUuid:
type: string
updatedByUser:
$ref: '#/components/schemas/Pick_UpdatedByUser.userUuid_'
pinnedParameters:
items:
type: string
type: array
parameters:
$ref: '#/components/schemas/DashboardParameters'
filters:
$ref: '#/components/schemas/DashboardFilters'
tiles:
items:
anyOf:
- $ref: '#/components/schemas/CreateDashboardChartTile'
- $ref: '#/components/schemas/CreateDashboardMarkdownTile'
- $ref: '#/components/schemas/CreateDashboardLoomTile'
- $ref: '#/components/schemas/CreateDashboardSqlChartTile'
- $ref: '#/components/schemas/CreateDashboardHeadingTile'
- $ref: '#/components/schemas/CreateDashboardDataAppTile'
type: array
description:
type: string
name:
type: string
required:
- tabs
- tiles
- name
type: object
ApiCreateDashboardWithChartsResponse:
properties:
results:
$ref: '#/components/schemas/Dashboard'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-pivotConfig-or-chartConfig-or-tableConfig-or-parameters_
: properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
description: Parameter values for the chart query
chartConfig:
$ref: '#/components/schemas/ChartConfig'
description: Visualization configuration for the chart
tableName:
type: string
description: The explore/table name this chart queries from
metricQuery:
$ref: '#/components/schemas/MetricQuery'
description: The query configuration defining what data to fetch
pivotConfig:
properties:
columns:
items:
type: string
type: array
required:
- columns
type: object
description: Pivot table configuration
tableConfig:
properties:
columnOrder:
items:
type: string
type: array
required:
- columnOrder
type: object
description: Table view configuration
required:
- name
- chartConfig
- tableName
- metricQuery
- tableConfig
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateChartBase:
$ref: '#/components/schemas/Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-pivotConfig-or-chartConfig-or-tableConfig-or-parameters_'
CreateChartInSpace:
allOf:
- $ref: '#/components/schemas/CreateChartBase'
- properties:
dashboardUuid:
type: number
enum:
- null
nullable: true
spaceUuid:
type: string
type: object
CreateChartInDashboard:
allOf:
- $ref: '#/components/schemas/CreateChartBase'
- properties:
spaceUuid:
type: number
enum:
- null
nullable: true
dashboardUuid:
type: string
required:
- dashboardUuid
type: object
CreateSavedChart:
anyOf:
- $ref: '#/components/schemas/CreateChartInSpace'
- $ref: '#/components/schemas/CreateChartInDashboard'
CreateDashboardWithCharts:
properties:
charts:
items:
$ref: '#/components/schemas/CreateSavedChart'
type: array
spaceUuid:
type: string
description:
type: string
name:
type: string
required:
- charts
- spaceUuid
- name
type: object
ApiUpdateDashboardsResponse:
properties:
results:
items:
$ref: '#/components/schemas/Dashboard'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Dashboard.uuid-or-name-or-description-or-spaceUuid_:
properties:
description:
type: string
name:
type: string
uuid:
type: string
spaceUuid:
type: string
required:
- name
- uuid
- spaceUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
UpdateMultipleDashboards:
$ref: '#/components/schemas/Pick_Dashboard.uuid-or-name-or-description-or-spaceUuid_'
ApiCreatePreviewResults:
properties:
compileJobUuid:
type: string
projectUuid:
type: string
required:
- compileJobUuid
- projectUuid
type: object
UpstreamFieldChangeKind:
type: string
enum:
- added
- removed
- label_changed
description: 'Field-level diff between a preview project and the project it
was copied from
(`upstreamProjectUuid`), computed in SQL over the `catalog_search` index.
Detects added/removed fields and label changes. It does not detect SQL-only
changes (same name/label, different SQL) — that would require walking the
cached explore definitions, which is too expensive to do per request.'
UpstreamFieldDiff:
properties:
previewLabel:
type: string
nullable: true
upstreamLabel:
type: string
nullable: true
fieldType:
type: string
nullable: true
fieldName:
type: string
tableName:
type: string
exploreName:
type: string
change:
$ref: '#/components/schemas/UpstreamFieldChangeKind'
required:
- previewLabel
- upstreamLabel
- fieldType
- fieldName
- tableName
- exploreName
- change
type: object
ApiUpstreamDiffResults:
properties:
fields:
items:
$ref: '#/components/schemas/UpstreamFieldDiff'
type: array
upstreamProjectUuid:
type: string
required:
- fields
- upstreamProjectUuid
type: object
ApiUpstreamDiffResponse:
properties:
results:
$ref: '#/components/schemas/ApiUpstreamDiffResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
PreviewExpirationProjectSettings:
properties:
maxPreviewExpirationHours:
type: number
format: double
defaultPreviewExpirationHours:
type: number
format: double
projectUuid:
type: string
required:
- maxPreviewExpirationHours
- defaultPreviewExpirationHours
- projectUuid
type: object
ApiSuccess_PreviewExpirationProjectSettings_:
properties:
results:
$ref: '#/components/schemas/PreviewExpirationProjectSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPreviewExpirationProjectSettingsResponse:
$ref: '#/components/schemas/ApiSuccess_PreviewExpirationProjectSettings_'
UpdatePreviewExpirationProjectSettings:
properties:
maxPreviewExpirationHours:
type: number
format: double
defaultPreviewExpirationHours:
type: number
format: double
required:
- maxPreviewExpirationHours
- defaultPreviewExpirationHours
type: object
UpdateSchedulerSettings:
properties:
schedulerFailureContactOverride:
type: string
nullable: true
schedulerFailureIncludeContact:
type: boolean
schedulerFailureNotifyRecipients:
type: boolean
schedulerTimezone:
type: string
type: object
UpdateQueryTimezoneSettings:
properties:
useProjectTimezoneInFilters:
type: boolean
queryTimezone:
type: string
nullable: true
type: object
ApiCreateTagResponse:
properties:
results:
properties:
tagUuid:
type: string
required:
- tagUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Tag.name-or-color_:
properties:
name:
type: string
color:
type: string
required:
- name
- color
type: object
description: From T, pick a set of properties whose keys are in the union K
Partial_Pick_DbTag.name-or-color__:
properties:
name:
type: string
color:
type: string
type: object
description: Make all properties in T optional
DbTagUpdate:
$ref: '#/components/schemas/Partial_Pick_DbTag.name-or-color__'
Tag:
properties:
createdBy:
allOf:
- $ref: '#/components/schemas/Pick_LightdashUser.userUuid-or-firstName-or-lastName_'
nullable: true
yamlReference:
type: string
nullable: true
createdAt:
type: string
format: date-time
color:
type: string
name:
type: string
projectUuid:
type: string
tagUuid:
type: string
required:
- createdBy
- yamlReference
- createdAt
- color
- name
- projectUuid
- tagUuid
type: object
ApiGetTagsResponse:
properties:
results:
items:
$ref: '#/components/schemas/Tag'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.Exclude_keyofPick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.metricQuery__
: properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
description: Parameter values for the chart query
slug:
type: string
description: Unique identifier slug for this chart
chartConfig:
$ref: '#/components/schemas/ChartConfig'
description: Visualization configuration for the chart
tableName:
type: string
description: The explore/table name this chart queries from
pivotConfig:
properties:
columns:
items:
type: string
type: array
required:
- columns
type: object
description: Pivot table configuration
required:
- name
- slug
- chartConfig
- tableName
type: object
description: From T, pick a set of properties whose keys are in the union K
? Omit_Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.metricQuery_
: $ref: '#/components/schemas/Pick_Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.Exclude_keyofPick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.metricQuery__'
description: Construct a type with the properties of T except for those in type
K.
Pick_CompiledDimension.name-or-label-or-table_:
properties: {}
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_MetricQuery.Exclude_keyofMetricQuery.filters__:
properties:
limit:
type: number
format: double
description: Maximum number of rows to return
timezone:
type: string
description: Timezone for date/time values (e.g., 'America/Los_Angeles',
'UTC')
exploreName:
type: string
description: The name of the explore to query
dimensions:
items:
type: string
type: array
description: List of dimension field IDs to include
metrics:
items:
type: string
type: array
description: List of metric field IDs to include
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
description: Sort configuration for query results
tableCalculations:
items:
$ref: '#/components/schemas/TableCalculation'
type: array
description: Custom calculations to perform on query results
additionalMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
description: Custom metrics defined inline (ad-hoc metrics not in the dbt
model)
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
description: Custom dimensions defined inline
metricOverrides:
$ref: '#/components/schemas/MetricOverrides'
description: Override formatting options for existing metrics
dimensionOverrides:
$ref: '#/components/schemas/DimensionOverrides'
description: Override formatting options for existing dimensions
pivotDimensions:
items:
type: string
type: array
description: 'Dimension field IDs used as pivot columns (from chart''s pivotConfig.columns).
Used by row_total() to determine non-pivot dimensions for GROUP BY.'
metadata:
properties:
hasADateDimension:
$ref: '#/components/schemas/Pick_CompiledDimension.name-or-label-or-table_'
required:
- hasADateDimension
type: object
required:
- limit
- exploreName
- dimensions
- metrics
- sorts
- tableCalculations
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_MetricQuery.filters_:
$ref: '#/components/schemas/Pick_MetricQuery.Exclude_keyofMetricQuery.filters__'
description: Construct a type with the properties of T except for those in type
K.
FilterGroupInput:
anyOf:
- $ref: '#/components/schemas/OrFilterGroupInput'
- $ref: '#/components/schemas/AndFilterGroupInput'
Pick_FilterRule.Exclude_keyofFilterRule.id__:
properties:
target:
$ref: '#/components/schemas/FieldTarget'
description: Target field for the filter
settings:
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.'
operator:
$ref: '#/components/schemas/FilterOperator'
description: Filter operator
values:
items: {}
type: array
description: Values to filter by
required:
- target
- operator
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_FilterRule.id_:
$ref: '#/components/schemas/Pick_FilterRule.Exclude_keyofFilterRule.id__'
description: Construct a type with the properties of T except for those in type
K.
FilterRuleInput:
allOf:
- $ref: '#/components/schemas/Omit_FilterRule.id_'
- properties:
id:
type: string
type: object
description: 'Permissive filter types for chart-as-code uploads where `id` may
be omitted.
Filter IDs are auto-generated during upsert if absent.
After normalization these become the strict runtime types (FilterGroup, Filters).'
FilterGroupItemInput:
anyOf:
- $ref: '#/components/schemas/FilterGroupInput'
- $ref: '#/components/schemas/FilterRuleInput'
OrFilterGroupInput:
properties:
or:
items:
$ref: '#/components/schemas/FilterGroupItemInput'
type: array
id:
type: string
required:
- or
type: object
AndFilterGroupInput:
properties:
and:
items:
$ref: '#/components/schemas/FilterGroupItemInput'
type: array
id:
type: string
required:
- and
type: object
FiltersInput:
properties:
tableCalculations:
$ref: '#/components/schemas/FilterGroupInput'
metrics:
$ref: '#/components/schemas/FilterGroupInput'
dimensions:
$ref: '#/components/schemas/FilterGroupInput'
type: object
ContentAsCodeType.CHART:
enum:
- chart
type: string
ChartAsCode:
allOf:
- $ref: '#/components/schemas/Omit_Pick_SavedChart.name-or-description-or-tableName-or-metricQuery-or-chartConfig-or-pivotConfig-or-slug-or-parameters_.metricQuery_'
- properties:
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
description: Detailed verification info (who/when). Read-only; ignored
on upload.
verified:
type: boolean
description: 'Declarative verification state.
`true` verifies the chart on upload, `false` unverifies it, `undefined`
leaves the
current state untouched. Download sets this to `true` when the chart
is verified.'
downloadedAt:
type: string
format: date-time
description: Timestamp when this chart was downloaded from Lightdash
spaceSlug:
type: string
description: Slug of the space containing this chart
contentType:
$ref: '#/components/schemas/ContentAsCodeType.CHART'
description: Content type discriminator
version:
type: number
format: double
description: Schema version for this chart configuration
dashboardSlug:
type: string
description: Slug of the dashboard this chart belongs to (if any)
tableConfig:
properties:
columnOrder:
items:
type: string
type: array
required:
- columnOrder
type: object
description: Table configuration. Defaults to empty column order if omitted.
updatedAt:
type: string
format: date-time
description: Not modifiable by user, but useful to know if it has been
updated. Defaults to now if omitted.
metricQuery:
allOf:
- $ref: '#/components/schemas/Omit_MetricQuery.filters_'
- properties:
filters:
$ref: '#/components/schemas/FiltersInput'
required:
- filters
type: object
required:
- spaceSlug
- version
- metricQuery
type: object
? PartialObjectDeep___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--chartConfig_63__58__type-ChartType.CARTESIAN--config_63__58__eChartsConfig_58__series_63__58__name_63_-string-or-undefined--markLine_63__58__data_58__name_63_-string-or-undefined_-Array_-or-undefined_-Array-or-undefined--xAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined--yAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined__-or-undefined_-or-_type-ChartType.PIE--config_63__58__groupLabelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.FUNNEL--config_63__58__labelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.BIG_NUMBER--config_63__58__label_63_-string-or-undefined--comparisonLabel_63_-string-or-undefined--comparisonField_63_-string-or-undefined_-or-undefined_-or-_type-ChartType.TABLE--config_63__58__columns_63_-Record_string._name-string__-or-undefined_-or-undefined_-or-_type-ChartType.CUSTOM--config_63__58__spec_63_-Record_string.unknown_-or-undefined_-or-undefined_-or-undefined__._recurseIntoArrays-true__
: properties: {}
type: object
description: Same as `PartialDeep`, but accepts only `object`s as inputs. Internal
helper for `PartialDeep`.
? PartialObjectDeep__chart_58___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--chartConfig_63__58__type-ChartType.CARTESIAN--config_63__58__eChartsConfig_58__series_63__58__name_63_-string-or-undefined--markLine_63__58__data_58__name_63_-string-or-undefined_-Array_-or-undefined_-Array-or-undefined--xAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined--yAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined__-or-undefined_-or-_type-ChartType.PIE--config_63__58__groupLabelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.FUNNEL--config_63__58__labelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.BIG_NUMBER--config_63__58__label_63_-string-or-undefined--comparisonLabel_63_-string-or-undefined--comparisonField_63_-string-or-undefined_-or-undefined_-or-_type-ChartType.TABLE--config_63__58__columns_63_-Record_string._name-string__-or-undefined_-or-undefined_-or-_type-ChartType.CUSTOM--config_63__58__spec_63_-Record_string.unknown_-or-undefined_-or-undefined_-or-undefined___._recurseIntoArrays-true__
: properties:
chart:
$ref: '#/components/schemas/PartialObjectDeep___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--chartConfig_63__58__type-ChartType.CARTESIAN--config_63__58__eChartsConfig_58__series_63__58__name_63_-string-or-undefined--markLine_63__58__data_58__name_63_-string-or-undefined_-Array_-or-undefined_-Array-or-undefined--xAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined--yAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined__-or-undefined_-or-_type-ChartType.PIE--config_63__58__groupLabelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.FUNNEL--config_63__58__labelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.BIG_NUMBER--config_63__58__label_63_-string-or-undefined--comparisonLabel_63_-string-or-undefined--comparisonField_63_-string-or-undefined_-or-undefined_-or-_type-ChartType.TABLE--config_63__58__columns_63_-Record_string._name-string__-or-undefined_-or-undefined_-or-_type-ChartType.CUSTOM--config_63__58__spec_63_-Record_string.unknown_-or-undefined_-or-undefined_-or-undefined__._recurseIntoArrays-true__'
type: object
description: Same as `PartialDeep`, but accepts only `object`s as inputs. Internal
helper for `PartialDeep`.
PartialDeep_ChartAsCodeLanguageMap._recurseIntoArrays-true__:
$ref: '#/components/schemas/PartialObjectDeep__chart_58___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--chartConfig_63__58__type-ChartType.CARTESIAN--config_63__58__eChartsConfig_58__series_63__58__name_63_-string-or-undefined--markLine_63__58__data_58__name_63_-string-or-undefined_-Array_-or-undefined_-Array-or-undefined--xAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined--yAxis_63__58__name_63_-string-or-undefined_-Array-or-undefined__-or-undefined_-or-_type-ChartType.PIE--config_63__58__groupLabelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.FUNNEL--config_63__58__labelOverrides_63_-Record_string.string_-or-undefined_-or-undefined_-or-_type-ChartType.BIG_NUMBER--config_63__58__label_63_-string-or-undefined--comparisonLabel_63_-string-or-undefined--comparisonField_63_-string-or-undefined_-or-undefined_-or-_type-ChartType.TABLE--config_63__58__columns_63_-Record_string._name-string__-or-undefined_-or-undefined_-or-_type-ChartType.CUSTOM--config_63__58__spec_63_-Record_string.unknown_-or-undefined_-or-undefined_-or-undefined___._recurseIntoArrays-true__'
description: 'Create a type from another type with all keys and nested keys
set to optional.
Use-cases:
- Merging a default settings/config object with another object, the second
object would be a deep partial of the default object.
- Mocking and testing complex entities, where populating an entire object
with its keys would be redundant in terms of the mock or test.'
ContentAsCodeType.SPACE:
enum:
- space
type: string
SpaceAsCode:
properties:
slug:
type: string
description: The space slug used for file naming and cross-referencing
spaceName:
type: string
description: The original human-readable space name (preserves emoji, casing,
etc.)
contentType:
$ref: '#/components/schemas/ContentAsCodeType.SPACE'
required:
- slug
- spaceName
- contentType
type: object
ApiChartAsCodeListResponse:
properties:
results:
properties:
offset:
type: number
format: double
total:
type: number
format: double
spaces:
items:
$ref: '#/components/schemas/SpaceAsCode'
type: array
missingIds:
items:
type: string
type: array
languageMap:
items:
$ref: '#/components/schemas/PartialDeep_ChartAsCodeLanguageMap._recurseIntoArrays-true__'
type: array
charts:
items:
$ref: '#/components/schemas/ChartAsCode'
type: array
required:
- offset
- total
- spaces
- missingIds
- charts
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
? Pick_Pick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.Exclude_keyofPick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.name-or-slug-or-tabs__
: properties:
description:
type: string
parameters:
$ref: '#/components/schemas/DashboardParameters'
config:
$ref: '#/components/schemas/DashboardConfig'
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Pick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.name-or-slug-or-tabs_:
$ref: '#/components/schemas/Pick_Pick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.Exclude_keyofPick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.name-or-slug-or-tabs__'
description: Construct a type with the properties of T except for those in type
K.
DashboardTabAsCode:
properties:
hidden:
type: boolean
order:
type: number
format: double
minimum: 0
name:
type: string
minLength: 1
uuid:
type: string
required:
- order
- name
- uuid
type: object
DashboardTileAsCodeBase:
properties:
tabUuid:
type: string
nullable: true
w:
type: number
format: double
minimum: 1
maximum: 36
h:
type: number
format: double
minimum: 1
y:
type: number
format: double
minimum: 0
x:
type: number
format: double
minimum: 0
maximum: 35
type:
$ref: '#/components/schemas/DashboardTileTypes'
tileSlug:
type: string
uuid:
type: string
required:
- w
- h
- y
- x
- type
type: object
Pick_DashboardChartTileProperties-at-properties.title-or-hideTitle-or-chartName_:
properties:
title:
type: string
chartName:
type: string
nullable: true
hideTitle:
type: boolean
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardChartTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
allOf:
- $ref: '#/components/schemas/Pick_DashboardChartTileProperties-at-properties.title-or-hideTitle-or-chartName_'
- properties:
chartSlug:
type: string
nullable: true
required:
- chartSlug
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
required:
- properties
- type
type: object
Pick_DashboardSqlChartTileProperties-at-properties.title-or-hideTitle-or-chartName_:
properties:
title:
type: string
chartName:
type: string
hideTitle:
type: boolean
required:
- chartName
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardSqlChartTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
allOf:
- $ref: '#/components/schemas/Pick_DashboardSqlChartTileProperties-at-properties.title-or-hideTitle-or-chartName_'
- properties:
chartSlug:
type: string
nullable: true
required:
- chartSlug
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.SQL_CHART'
required:
- properties
- type
type: object
DashboardMarkdownTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
properties:
hideFrame:
type: boolean
content:
type: string
title:
type: string
required:
- content
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.MARKDOWN'
required:
- properties
- type
type: object
DashboardLoomTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
properties:
url:
type: string
hideTitle:
type: boolean
title:
type: string
required:
- url
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.LOOM'
required:
- properties
- type
type: object
DashboardHeadingTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
properties:
showDivider:
type: boolean
text:
type: string
title: {}
required:
- text
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.HEADING'
required:
- properties
- type
type: object
DashboardDataAppTileAsCode:
allOf:
- $ref: '#/components/schemas/DashboardTileAsCodeBase'
- properties:
properties:
properties:
appDeletedAt:
type: string
nullable: true
appUuid:
type: string
hideTitle:
type: boolean
title:
type: string
required:
- appUuid
- title
type: object
type:
$ref: '#/components/schemas/DashboardTileTypes.DATA_APP'
required:
- properties
- type
type: object
DashboardTileAsCode:
anyOf:
- $ref: '#/components/schemas/DashboardChartTileAsCode'
- $ref: '#/components/schemas/DashboardSqlChartTileAsCode'
- $ref: '#/components/schemas/DashboardMarkdownTileAsCode'
- $ref: '#/components/schemas/DashboardLoomTileAsCode'
- $ref: '#/components/schemas/DashboardHeadingTileAsCode'
- $ref: '#/components/schemas/DashboardDataAppTileAsCode'
ContentAsCodeType.DASHBOARD:
enum:
- dashboard
type: string
Pick_DashboardFilterRule.Exclude_keyofDashboardFilterRule.id__:
properties:
label:
type: string
target:
$ref: '#/components/schemas/DashboardFieldTarget'
description: Target field for the filter
settings:
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.'
operator:
$ref: '#/components/schemas/FilterOperator'
description: Filter operator
values:
items: {}
type: array
description: Values to filter by
tileTargets:
$ref: '#/components/schemas/Record_string.DashboardTileTarget_'
singleValue:
type: boolean
lockedTabUuids:
items:
type: string
type: array
description: 'Tab UUIDs where this filter is locked. When the active tab
is in this
list, viewers see the filter but cannot change it, and URL / embed
filter overrides targeting the same field are ignored on that tab.
Empty or omitted means the filter is not locked anywhere.'
required:
- target
- operator
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_DashboardFilterRule.id_:
$ref: '#/components/schemas/Pick_DashboardFilterRule.Exclude_keyofDashboardFilterRule.id__'
description: Construct a type with the properties of T except for those in type
K.
DashboardAsCode:
allOf:
- $ref: '#/components/schemas/Omit_Pick_Dashboard.name-or-description-or-tabs-or-slug-or-config-or-parameters_.name-or-slug-or-tabs_'
- properties:
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
description: Detailed verification info (who/when). Read-only; ignored
on upload.
verified:
type: boolean
description: 'Declarative verification state.
`true` verifies the dashboard on upload, `false` unverifies it, `undefined`
leaves the
current state untouched. Download sets this to `true` when the dashboard
is verified.'
filters:
properties:
tableCalculations:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
metrics:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
dimensions:
items:
$ref: '#/components/schemas/Omit_DashboardFilterRule.id_'
type: array
type: object
downloadedAt:
type: string
format: date-time
spaceSlug:
type: string
contentType:
$ref: '#/components/schemas/ContentAsCodeType.DASHBOARD'
version:
type: number
format: double
tiles:
items:
$ref: '#/components/schemas/DashboardTileAsCode'
type: array
updatedAt:
type: string
format: date-time
description: Not modifiable by user, but useful to know if it has been
updated. Defaults to now if omitted.
tabs:
items:
$ref: '#/components/schemas/DashboardTabAsCode'
type: array
slug:
type: string
pattern: ^[a-z0-9-]+$
name:
type: string
minLength: 1
required:
- spaceSlug
- version
- tiles
- tabs
- slug
- name
type: object
? PartialObjectDeep___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--tiles_63__58__40__type-DashboardTileTypes.SAVED_CHART-or-DashboardTileTypes.SQL_CHART--properties_58__title-string--chartName-string__-or-_type-DashboardTileTypes.MARKDOWN--properties_58__content-string--title-string__-or-_type-DashboardTileTypes.LOOM--properties_58__title-string__-or-_type-DashboardTileTypes.HEADING--properties_58__text-string__-or-_type-DashboardTileTypes.DATA_APP--properties_58__title-string___41_-Array-or-undefined__._recurseIntoArrays-true__
: properties: {}
type: object
description: Same as `PartialDeep`, but accepts only `object`s as inputs. Internal
helper for `PartialDeep`.
? PartialObjectDeep__dashboard_58___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--tiles_63__58__40__type-DashboardTileTypes.SAVED_CHART-or-DashboardTileTypes.SQL_CHART--properties_58__title-string--chartName-string__-or-_type-DashboardTileTypes.MARKDOWN--properties_58__content-string--title-string__-or-_type-DashboardTileTypes.LOOM--properties_58__title-string__-or-_type-DashboardTileTypes.HEADING--properties_58__text-string__-or-_type-DashboardTileTypes.DATA_APP--properties_58__title-string___41_-Array-or-undefined___._recurseIntoArrays-true__
: properties:
dashboard:
$ref: '#/components/schemas/PartialObjectDeep___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--tiles_63__58__40__type-DashboardTileTypes.SAVED_CHART-or-DashboardTileTypes.SQL_CHART--properties_58__title-string--chartName-string__-or-_type-DashboardTileTypes.MARKDOWN--properties_58__content-string--title-string__-or-_type-DashboardTileTypes.LOOM--properties_58__title-string__-or-_type-DashboardTileTypes.HEADING--properties_58__text-string__-or-_type-DashboardTileTypes.DATA_APP--properties_58__title-string___41_-Array-or-undefined__._recurseIntoArrays-true__'
type: object
description: Same as `PartialDeep`, but accepts only `object`s as inputs. Internal
helper for `PartialDeep`.
PartialDeep_DashboardAsCodeLanguageMap._recurseIntoArrays-true__:
$ref: '#/components/schemas/PartialObjectDeep__dashboard_58___91_x-string_93__58__description_63_-string-or-undefined--name_63_-string-or-undefined--tiles_63__58__40__type-DashboardTileTypes.SAVED_CHART-or-DashboardTileTypes.SQL_CHART--properties_58__title-string--chartName-string__-or-_type-DashboardTileTypes.MARKDOWN--properties_58__content-string--title-string__-or-_type-DashboardTileTypes.LOOM--properties_58__title-string__-or-_type-DashboardTileTypes.HEADING--properties_58__text-string__-or-_type-DashboardTileTypes.DATA_APP--properties_58__title-string___41_-Array-or-undefined___._recurseIntoArrays-true__'
description: 'Create a type from another type with all keys and nested keys
set to optional.
Use-cases:
- Merging a default settings/config object with another object, the second
object would be a deep partial of the default object.
- Mocking and testing complex entities, where populating an entire object
with its keys would be redundant in terms of the mock or test.'
ApiDashboardAsCodeListResponse:
properties:
results:
properties:
offset:
type: number
format: double
total:
type: number
format: double
spaces:
items:
$ref: '#/components/schemas/SpaceAsCode'
type: array
missingIds:
items:
type: string
type: array
languageMap:
items:
$ref: '#/components/schemas/PartialDeep_DashboardAsCodeLanguageMap._recurseIntoArrays-true__'
type: array
dashboards:
items:
$ref: '#/components/schemas/DashboardAsCode'
type: array
required:
- offset
- total
- spaces
- missingIds
- dashboards
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiChartAsCodeUpsertResponse:
properties:
results:
$ref: '#/components/schemas/PromotionChanges'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_ChartAsCode.Exclude_keyofChartAsCode.chartConfig-or-description__:
properties:
name:
type: string
description: Display name of the chart
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
description: Parameter values for the chart query
slug:
type: string
description: Unique identifier slug for this chart
updatedAt:
type: string
format: date-time
description: Not modifiable by user, but useful to know if it has been updated.
Defaults to now if omitted.
version:
type: number
format: double
description: Schema version for this chart configuration
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
description: Detailed verification info (who/when). Read-only; ignored on
upload.
tableName:
type: string
description: The explore/table name this chart queries from
metricQuery:
allOf:
- $ref: '#/components/schemas/Omit_MetricQuery.filters_'
- properties:
filters:
$ref: '#/components/schemas/FiltersInput'
required:
- filters
type: object
pivotConfig:
properties:
columns:
items:
type: string
type: array
required:
- columns
type: object
description: Pivot table configuration
tableConfig:
properties:
columnOrder:
items:
type: string
type: array
required:
- columnOrder
type: object
description: Table configuration. Defaults to empty column order if omitted.
dashboardSlug:
type: string
description: Slug of the dashboard this chart belongs to (if any)
contentType:
$ref: '#/components/schemas/ContentAsCodeType.CHART'
description: Content type discriminator
spaceSlug:
type: string
description: Slug of the space containing this chart
downloadedAt:
type: string
format: date-time
description: Timestamp when this chart was downloaded from Lightdash
verified:
type: boolean
description: 'Declarative verification state.
`true` verifies the chart on upload, `false` unverifies it, `undefined`
leaves the
current state untouched. Download sets this to `true` when the chart is
verified.'
required:
- name
- slug
- version
- tableName
- metricQuery
- spaceSlug
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_ChartAsCode.chartConfig-or-description_:
$ref: '#/components/schemas/Pick_ChartAsCode.Exclude_keyofChartAsCode.chartConfig-or-description__'
description: Construct a type with the properties of T except for those in type
K.
Pick_SqlChart.name-or-description-or-slug-or-sql-or-limit-or-config-or-chartKind_:
properties:
description:
type: string
nullable: true
name:
type: string
limit:
type: number
format: double
slug:
type: string
config:
allOf:
- $ref: '#/components/schemas/VizBaseConfig'
- anyOf:
- $ref: '#/components/schemas/VizCartesianChartConfig'
- $ref: '#/components/schemas/VizPieChartConfig'
- $ref: '#/components/schemas/VizTableConfig'
sql:
type: string
chartKind:
$ref: '#/components/schemas/ChartKind'
required:
- description
- name
- limit
- slug
- config
- sql
- chartKind
type: object
description: From T, pick a set of properties whose keys are in the union K
ContentAsCodeType.SQL_CHART:
enum:
- sql_chart
type: string
SqlChartAsCode:
allOf:
- $ref: '#/components/schemas/Pick_SqlChart.name-or-description-or-slug-or-sql-or-limit-or-config-or-chartKind_'
- properties:
downloadedAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
spaceSlug:
type: string
contentType:
$ref: '#/components/schemas/ContentAsCodeType.SQL_CHART'
version:
type: number
format: double
required:
- spaceSlug
- version
type: object
ApiSqlChartAsCodeListResponse:
properties:
results:
properties:
offset:
type: number
format: double
total:
type: number
format: double
spaces:
items:
$ref: '#/components/schemas/SpaceAsCode'
type: array
missingIds:
items:
type: string
type: array
sqlCharts:
items:
$ref: '#/components/schemas/SqlChartAsCode'
type: array
required:
- offset
- total
- spaces
- missingIds
- sqlCharts
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSqlChartAsCodeUpsertResponse:
properties:
results:
$ref: '#/components/schemas/PromotionChanges'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_SqlChartAsCode.Exclude_keyofSqlChartAsCode.config-or-description__:
properties:
name:
type: string
limit:
type: number
format: double
slug:
type: string
updatedAt:
type: string
format: date-time
version:
type: number
format: double
contentType:
$ref: '#/components/schemas/ContentAsCodeType.SQL_CHART'
spaceSlug:
type: string
downloadedAt:
type: string
format: date-time
sql:
type: string
chartKind:
$ref: '#/components/schemas/ChartKind'
required:
- name
- limit
- slug
- version
- spaceSlug
- sql
- chartKind
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_SqlChartAsCode.config-or-description_:
$ref: '#/components/schemas/Pick_SqlChartAsCode.Exclude_keyofSqlChartAsCode.config-or-description__'
description: Construct a type with the properties of T except for those in type
K.
ApiDashboardAsCodeUpsertResponse:
properties:
results:
$ref: '#/components/schemas/PromotionChanges'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_DashboardAsCode.Exclude_keyofDashboardAsCode.tiles-or-description__:
properties:
name:
type: string
minLength: 1
parameters:
$ref: '#/components/schemas/DashboardParameters'
slug:
type: string
pattern: ^[a-z0-9-]+$
updatedAt:
type: string
format: date-time
description: Not modifiable by user, but useful to know if it has been updated.
Defaults to now if omitted.
version:
type: number
format: double
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
description: Detailed verification info (who/when). Read-only; ignored on
upload.
filters:
properties:
tableCalculations:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
metrics:
items:
$ref: '#/components/schemas/DashboardFilterRule'
type: array
dimensions:
items:
$ref: '#/components/schemas/Omit_DashboardFilterRule.id_'
type: array
type: object
tabs:
items:
$ref: '#/components/schemas/DashboardTabAsCode'
type: array
config:
$ref: '#/components/schemas/DashboardConfig'
contentType:
$ref: '#/components/schemas/ContentAsCodeType.DASHBOARD'
spaceSlug:
type: string
downloadedAt:
type: string
format: date-time
verified:
type: boolean
description: 'Declarative verification state.
`true` verifies the dashboard on upload, `false` unverifies it, `undefined`
leaves the
current state untouched. Download sets this to `true` when the dashboard
is verified.'
required:
- name
- slug
- version
- tabs
- spaceSlug
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_DashboardAsCode.tiles-or-description_:
$ref: '#/components/schemas/Pick_DashboardAsCode.Exclude_keyofDashboardAsCode.tiles-or-description__'
description: Construct a type with the properties of T except for those in type
K.
ApiRefreshResults:
properties:
jobUuid:
type: string
required:
- jobUuid
type: object
ApiSuccess_ApiRefreshResults_:
properties:
results:
$ref: '#/components/schemas/ApiRefreshResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSuccess__jobIds-string-Array__:
properties:
results:
properties:
jobIds:
items:
type: string
type: array
required:
- jobIds
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ContentType:
enum:
- chart
- dashboard
- space
- data_app
type: string
VerifiedContentListItem:
properties:
verifiedAt:
type: string
format: date-time
verifiedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
spaceName:
type: string
spaceUuid:
type: string
name:
type: string
contentUuid:
type: string
contentType:
$ref: '#/components/schemas/ContentType'
uuid:
type: string
required:
- verifiedAt
- verifiedBy
- spaceName
- spaceUuid
- name
- contentUuid
- contentType
- uuid
type: object
ApiVerifiedContentListResponse:
properties:
results:
items:
$ref: '#/components/schemas/VerifiedContentListItem'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CompilationSource:
type: string
enum:
- cli_deploy
- refresh_dbt
- create_project
Partial_Explore_:
properties:
name:
type: string
label:
type: string
tags:
items:
type: string
type: array
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
baseTable:
type: string
joinedTables:
items:
$ref: '#/components/schemas/CompiledExploreJoin'
type: array
tables:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledTable'
type: object
unfilteredTables:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledTable'
type: object
targetDatabase:
$ref: '#/components/schemas/SupportedDbtAdapter'
warehouse:
type: string
databricksCompute:
type: string
ymlPath:
type: string
sqlPath:
type: string
type:
$ref: '#/components/schemas/ExploreType'
caseSensitive:
type: boolean
spotlight:
properties:
owner:
type: string
categories:
items:
type: string
type: array
visibility:
type: string
enum:
- show
- hide
required:
- visibility
type: object
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
parameters:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
savedParameterValues:
$ref: '#/components/schemas/ParametersValuesMap'
preAggregates:
items:
$ref: '#/components/schemas/PreAggregateDef'
type: array
preAggregateSource:
$ref: '#/components/schemas/PreAggregateSource'
warnings:
items:
$ref: '#/components/schemas/InlineError'
type: array
description: 'Non-fatal warnings from partial compilation.
Present when some joins or fields failed to compile but the explore is
still usable.
Only populated when PARTIAL_COMPILATION_ENABLED=true.'
type: object
description: Make all properties in T optional
Pick_Explore.name-or-label-or-groupLabel-or-groups_:
properties:
name:
type: string
label:
type: string
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
required:
- name
- label
type: object
description: From T, pick a set of properties whose keys are in the union K
ExploreError:
allOf:
- $ref: '#/components/schemas/Partial_Explore_'
- $ref: '#/components/schemas/Pick_Explore.name-or-label-or-groupLabel-or-groups_'
- properties:
errors:
items:
$ref: '#/components/schemas/InlineError'
type: array
required:
- errors
type: object
CompilationHistoryReport:
properties:
baseTableNames:
items:
type: string
type: array
exploresWithErrors:
items:
$ref: '#/components/schemas/ExploreError'
type: array
dimensionsCount:
type: number
format: double
metricsCount:
type: number
format: double
errorExploresCount:
type: number
format: double
successfulExploresCount:
type: number
format: double
totalExploresCount:
type: number
format: double
required:
- baseTableNames
- exploresWithErrors
- dimensionsCount
- metricsCount
- errorExploresCount
- successfulExploresCount
- totalExploresCount
type: object
ProjectCompileLog:
properties:
report:
$ref: '#/components/schemas/CompilationHistoryReport'
warehouseType:
type: string
nullable: true
requestMethod:
type: string
nullable: true
dbtConnectionType:
type: string
nullable: true
compilationSource:
$ref: '#/components/schemas/CompilationSource'
createdAt:
type: string
format: date-time
organizationUuid:
type: string
userName:
type: string
nullable: true
userUuid:
type: string
nullable: true
jobUuid:
type: string
nullable: true
projectUuid:
type: string
projectCompileLogId:
type: string
required:
- report
- warehouseType
- requestMethod
- dbtConnectionType
- compilationSource
- createdAt
- organizationUuid
- userName
- userUuid
- jobUuid
- projectUuid
- projectCompileLogId
type: object
ApiProjectCompileLogsResults:
properties:
pagination:
properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
pageSize:
type: number
format: double
page:
type: number
format: double
required:
- totalResults
- totalPageCount
- pageSize
- page
type: object
data:
items:
$ref: '#/components/schemas/ProjectCompileLog'
type: array
required:
- data
type: object
ApiProjectCompileLogsResponse:
properties:
results:
$ref: '#/components/schemas/ApiProjectCompileLogsResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiProjectCompileLogResponse:
properties:
results:
properties:
log:
$ref: '#/components/schemas/ProjectCompileLog'
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ResourceViewItemType.DASHBOARD:
enum:
- dashboard
type: string
? Pick_DashboardBasicDetails.uuid-or-spaceUuid-or-description-or-name-or-views-or-firstViewedAt-or-pinnedListUuid-or-pinnedListOrder-or-updatedAt-or-updatedByUser-or-validationErrors-or-verification_
: properties:
description:
type: string
name:
type: string
uuid:
type: string
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
updatedAt:
type: string
format: date-time
spaceUuid:
type: string
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
views:
type: number
format: double
firstViewedAt:
anyOf:
- type: string
- type: string
format: date-time
nullable: true
validationErrors:
items:
$ref: '#/components/schemas/ValidationSummary'
type: array
required:
- name
- uuid
- pinnedListUuid
- pinnedListOrder
- updatedAt
- spaceUuid
- verification
- views
- firstViewedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
ResourceItemCategory:
enum:
- mostPopular
- recentlyUpdated
- pinned
- favorites
- verified
type: string
ResourceViewDashboardItem:
properties:
category:
$ref: '#/components/schemas/ResourceItemCategory'
data:
$ref: '#/components/schemas/Pick_DashboardBasicDetails.uuid-or-spaceUuid-or-description-or-name-or-views-or-firstViewedAt-or-pinnedListUuid-or-pinnedListOrder-or-updatedAt-or-updatedByUser-or-validationErrors-or-verification_'
type:
$ref: '#/components/schemas/ResourceViewItemType.DASHBOARD'
required:
- data
- type
type: object
ResourceViewItemType.CHART:
enum:
- chart
type: string
? Pick_SpaceQuery.uuid-or-name-or-chartType-or-chartKind-or-firstViewedAt-or-views-or-pinnedListUuid-or-pinnedListOrder-or-spaceUuid-or-description-or-updatedAt-or-updatedByUser-or-validationErrors-or-verification-or-slug_
: properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
uuid:
type: string
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
slug:
type: string
description: Unique identifier slug for this chart
updatedAt:
type: string
format: date-time
description: Timestamp when the chart was last updated
spaceUuid:
type: string
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
updatedByUser:
$ref: '#/components/schemas/UpdatedByUser'
views:
type: number
format: double
firstViewedAt:
anyOf:
- type: string
- type: string
format: date-time
nullable: true
chartKind:
$ref: '#/components/schemas/ChartKind'
validationErrors:
items:
$ref: '#/components/schemas/ValidationSummary'
type: array
chartType:
$ref: '#/components/schemas/ChartType'
required:
- name
- uuid
- pinnedListUuid
- pinnedListOrder
- slug
- updatedAt
- spaceUuid
- verification
- views
- firstViewedAt
type: object
description: From T, pick a set of properties whose keys are in the union K
ResourceViewChartItem:
properties:
category:
$ref: '#/components/schemas/ResourceItemCategory'
data:
allOf:
- $ref: '#/components/schemas/Pick_SpaceQuery.uuid-or-name-or-chartType-or-chartKind-or-firstViewedAt-or-views-or-pinnedListUuid-or-pinnedListOrder-or-spaceUuid-or-description-or-updatedAt-or-updatedByUser-or-validationErrors-or-verification-or-slug_'
- properties:
source:
$ref: '#/components/schemas/ChartSourceType'
type: object
type:
$ref: '#/components/schemas/ResourceViewItemType.CHART'
required:
- data
- type
type: object
ResourceViewItemType.SPACE:
enum:
- space
type: string
? Pick_Space.projectUuid-or-uuid-or-name-or-pinnedListUuid-or-pinnedListOrder-or-organizationUuid-or-parentSpaceUuid-or-path-or-inheritParentPermissions_
: properties:
name:
type: string
projectUuid:
type: string
organizationUuid:
type: string
uuid:
type: string
inheritParentPermissions:
type: boolean
pinnedListUuid:
type: string
nullable: true
pinnedListOrder:
type: number
format: double
nullable: true
parentSpaceUuid:
type: string
nullable: true
path:
type: string
required:
- name
- projectUuid
- organizationUuid
- uuid
- inheritParentPermissions
- pinnedListUuid
- pinnedListOrder
- parentSpaceUuid
- path
type: object
description: From T, pick a set of properties whose keys are in the union K
ResourceViewSpaceItem:
properties:
data:
allOf:
- $ref: '#/components/schemas/Pick_Space.projectUuid-or-uuid-or-name-or-pinnedListUuid-or-pinnedListOrder-or-organizationUuid-or-parentSpaceUuid-or-path-or-inheritParentPermissions_'
- properties:
appCount:
type: number
format: double
childSpaceCount:
type: number
format: double
chartCount:
type: number
format: double
dashboardCount:
type: number
format: double
accessListLength:
type: number
format: double
access:
items:
type: string
type: array
required:
- appCount
- childSpaceCount
- chartCount
- dashboardCount
- accessListLength
- access
type: object
type:
$ref: '#/components/schemas/ResourceViewItemType.SPACE'
required:
- data
- type
type: object
ResourceViewItemType.DATA_APP:
enum:
- data_app
type: string
ResourceViewDataAppItem:
properties:
category:
$ref: '#/components/schemas/ResourceItemCategory'
data:
properties:
pinnedListOrder:
type: number
format: double
nullable: true
pinnedListUuid:
type: string
nullable: true
latestVersionStatus:
allOf:
- $ref: '#/components/schemas/AppVersionStatus'
nullable: true
latestVersionNumber:
type: number
format: double
nullable: true
firstViewedAt:
type: string
format: date-time
nullable: true
views:
type: number
format: double
updatedByUser:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
updatedAt:
type: string
format: date-time
createdByUserUuid:
type: string
nullable: true
spaceUuid:
type: string
nullable: true
description:
type: string
name:
type: string
uuid:
type: string
required:
- pinnedListOrder
- pinnedListUuid
- latestVersionStatus
- latestVersionNumber
- firstViewedAt
- views
- updatedByUser
- updatedAt
- createdByUserUuid
- spaceUuid
- name
- uuid
type: object
type:
$ref: '#/components/schemas/ResourceViewItemType.DATA_APP'
required:
- data
- type
type: object
PinnedItems:
items:
anyOf:
- $ref: '#/components/schemas/ResourceViewDashboardItem'
- $ref: '#/components/schemas/ResourceViewChartItem'
- $ref: '#/components/schemas/ResourceViewSpaceItem'
- $ref: '#/components/schemas/ResourceViewDataAppItem'
type: array
ApiPinnedItems:
properties:
results:
$ref: '#/components/schemas/PinnedItems'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ResourceViewItemType:
enum:
- chart
- dashboard
- space
- data_app
type: string
? Pick_ResourceViewChartItem-at-data-or-ResourceViewDashboardItem-at-data-or-ResourceViewSpaceItem-at-data-or-ResourceViewDataAppItem-at-data.uuid-or-pinnedListOrder_
: properties:
uuid:
type: string
pinnedListOrder:
type: number
format: double
nullable: true
required:
- uuid
- pinnedListOrder
type: object
description: From T, pick a set of properties whose keys are in the union K
UpdatePinnedItemOrder:
properties:
data:
$ref: '#/components/schemas/Pick_ResourceViewChartItem-at-data-or-ResourceViewDashboardItem-at-data-or-ResourceViewSpaceItem-at-data-or-ResourceViewDataAppItem-at-data.uuid-or-pinnedListOrder_'
type:
$ref: '#/components/schemas/ResourceViewItemType'
required:
- data
- type
type: object
OrganizationSettings:
properties:
corsAllowedDomains:
items:
type: string
type: array
nullable: true
description: 'Exact origins, wildcard subdomain origins, and regex patterns
this org
contributes to the instance CORS allow-list. Regex entries use `/.../`
syntax.'
csvCellsLimit:
type: number
format: double
nullable: true
description: 'Max number of cells (rows × columns) a CSV/Excel export may
contain for
this org. Inherits `LIGHTDASH_CSV_CELLS_LIMIT` and is capped by
`LIGHTDASH_CSV_MAX_LIMIT` (the ceiling); `null` inherits the
default. Always resolved to an effective number in API responses.'
queryLimit:
type: number
format: double
nullable: true
description: 'Max number of rows a query may return for this org. Inherits
and is
capped by the instance-wide `LIGHTDASH_QUERY_MAX_LIMIT` (the ceiling);
`null` inherits it. Always resolved to an effective number in API
responses so the frontend can display it directly.'
scheduledDeliveryExpirationSecondsGoogleChat:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Google Chat deliveries;
`null` inherits
the base. Google Chat has no instance env var, so this is an org-only
override (it still falls back to the base / env base).'
scheduledDeliveryExpirationSecondsMsTeams:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Microsoft Teams deliveries;
`null`
inherits the base. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_MSTEAMS`.'
scheduledDeliveryExpirationSecondsSlack:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Slack deliveries; `null`
inherits the
base. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_SLACK`.'
scheduledDeliveryExpirationSecondsEmail:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) of {@link scheduledDeliveryExpirationSeconds
}
for email deliveries; `null` inherits the base. Unlike the base, this
is
surfaced raw (not resolved) so the UI can distinguish "inherit" from an
explicit value. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_EMAIL`.'
scheduledDeliveryExpirationSeconds:
type: number
format: double
nullable: true
description: 'Base lifetime (seconds) of this org''s scheduled-delivery
download links —
the default every channel inherits. Overrides the instance-wide
`PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS` env; `null` inherits it.
This
field is always resolved to an effective number in API responses (it
falls back to the env default), so the frontend can display it directly.
A value over {@link S3_PRESIGNED_URL_MAX_EXPIRATION_SECONDS} transparently
switches that delivery to the persistent-download-URL system (the only
way a link can outlive AWS''s 7-day presigned ceiling).'
supportImpersonationEnabled:
type: boolean
nullable: true
description: 'Per-org consent for the Lightdash support team to impersonate
users in
the org while helping with a support request. Unlike the OIDC toggles
this has no instance/env default — it''s opt-in only, so `null` (or no
stored row) resolves to `false`.'
oidcToEmailLinkingEnabled:
type: boolean
nullable: true
description: 'Auto-link an OIDC identity to an existing user matched by
verified
primary email, regardless of how they signed up (overrides
`AUTH_ENABLE_OIDC_TO_EMAIL_LINKING`; `null` inherits it).'
oidcLinkingEnabled:
type: boolean
nullable: true
description: 'Auto-link a new OIDC identity to an existing user who already
has a
different OIDC identity with the same email (overrides
`AUTH_ENABLE_OIDC_LINKING`; `null` inherits it).'
required:
- corsAllowedDomains
- csvCellsLimit
- queryLimit
- scheduledDeliveryExpirationSecondsGoogleChat
- scheduledDeliveryExpirationSecondsMsTeams
- scheduledDeliveryExpirationSecondsSlack
- scheduledDeliveryExpirationSecondsEmail
- scheduledDeliveryExpirationSeconds
- supportImpersonationEnabled
- oidcToEmailLinkingEnabled
- oidcLinkingEnabled
type: object
description: 'Per-organization settings migrated from instance-wide env vars.
Surfaced in
the Pro admin panel and stored in the `organization_settings` table. Starts
with the OIDC account-linking toggles; designed to grow as more settings
move org-level.
Each value is tri-state: `null` means "not set — inherit the instance/env
default", while an explicit `true`/`false` overrides the env. The fallback
to the env default is resolved in the auth layer, not here.'
ApiOrganizationSettingsResponse:
properties:
results:
$ref: '#/components/schemas/OrganizationSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Partial_OrganizationSettings_:
properties:
oidcLinkingEnabled:
type: boolean
nullable: true
description: 'Auto-link a new OIDC identity to an existing user who already
has a
different OIDC identity with the same email (overrides
`AUTH_ENABLE_OIDC_LINKING`; `null` inherits it).'
oidcToEmailLinkingEnabled:
type: boolean
nullable: true
description: 'Auto-link an OIDC identity to an existing user matched by
verified
primary email, regardless of how they signed up (overrides
`AUTH_ENABLE_OIDC_TO_EMAIL_LINKING`; `null` inherits it).'
supportImpersonationEnabled:
type: boolean
nullable: true
description: 'Per-org consent for the Lightdash support team to impersonate
users in
the org while helping with a support request. Unlike the OIDC toggles
this has no instance/env default — it''s opt-in only, so `null` (or no
stored row) resolves to `false`.'
scheduledDeliveryExpirationSeconds:
type: number
format: double
nullable: true
description: 'Base lifetime (seconds) of this org''s scheduled-delivery
download links —
the default every channel inherits. Overrides the instance-wide
`PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS` env; `null` inherits it.
This
field is always resolved to an effective number in API responses (it
falls back to the env default), so the frontend can display it directly.
A value over {@link S3_PRESIGNED_URL_MAX_EXPIRATION_SECONDS} transparently
switches that delivery to the persistent-download-URL system (the only
way a link can outlive AWS''s 7-day presigned ceiling).'
scheduledDeliveryExpirationSecondsEmail:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) of {@link scheduledDeliveryExpirationSeconds
}
for email deliveries; `null` inherits the base. Unlike the base, this
is
surfaced raw (not resolved) so the UI can distinguish "inherit" from an
explicit value. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_EMAIL`.'
scheduledDeliveryExpirationSecondsSlack:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Slack deliveries; `null`
inherits the
base. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_SLACK`.'
scheduledDeliveryExpirationSecondsMsTeams:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Microsoft Teams deliveries;
`null`
inherits the base. Overrides `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS_MSTEAMS`.'
scheduledDeliveryExpirationSecondsGoogleChat:
type: number
format: double
nullable: true
description: 'Per-channel override (seconds) for Google Chat deliveries;
`null` inherits
the base. Google Chat has no instance env var, so this is an org-only
override (it still falls back to the base / env base).'
queryLimit:
type: number
format: double
nullable: true
description: 'Max number of rows a query may return for this org. Inherits
and is
capped by the instance-wide `LIGHTDASH_QUERY_MAX_LIMIT` (the ceiling);
`null` inherits it. Always resolved to an effective number in API
responses so the frontend can display it directly.'
csvCellsLimit:
type: number
format: double
nullable: true
description: 'Max number of cells (rows × columns) a CSV/Excel export may
contain for
this org. Inherits `LIGHTDASH_CSV_CELLS_LIMIT` and is capped by
`LIGHTDASH_CSV_MAX_LIMIT` (the ceiling); `null` inherits the
default. Always resolved to an effective number in API responses.'
corsAllowedDomains:
items:
type: string
type: array
nullable: true
description: 'Exact origins, wildcard subdomain origins, and regex patterns
this org
contributes to the instance CORS allow-list. Regex entries use `/.../`
syntax.'
type: object
description: Make all properties in T optional
UpdateOrganizationSettings:
$ref: '#/components/schemas/Partial_OrganizationSettings_'
OrganizationDesignFileKind:
type: string
enum:
- instruction
- css
- font
- image
ApiOrganizationDesignFile:
properties:
createdAt:
type: string
format: date-time
sizeBytes:
type: number
format: double
contentType:
type: string
filename:
type: string
kind:
$ref: '#/components/schemas/OrganizationDesignFileKind'
fileUuid:
type: string
required:
- createdAt
- sizeBytes
- contentType
- filename
- kind
- fileUuid
type: object
ApiOrganizationDesign:
properties:
files:
items:
$ref: '#/components/schemas/ApiOrganizationDesignFile'
type: array
createdByUserUuid:
type: string
nullable: true
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
isDefault:
type: boolean
extraInstructions:
type: string
nullable: true
description: 'Free-text override appended to the agent''s effective skill
at build
time, alongside any uploaded `instruction` markdown files. Empty
string is normalised to `null` server-side.'
description:
type: string
nullable: true
name:
type: string
organizationUuid:
type: string
designUuid:
type: string
required:
- files
- createdByUserUuid
- updatedAt
- createdAt
- isDefault
- extraInstructions
- description
- name
- organizationUuid
- designUuid
type: object
ApiSuccess_ApiOrganizationDesign-Array_:
properties:
results:
items:
$ref: '#/components/schemas/ApiOrganizationDesign'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiOrganizationDesignsResponse:
$ref: '#/components/schemas/ApiSuccess_ApiOrganizationDesign-Array_'
ApiSuccess_ApiOrganizationDesign_:
properties:
results:
$ref: '#/components/schemas/ApiOrganizationDesign'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiOrganizationDesignResponse:
$ref: '#/components/schemas/ApiSuccess_ApiOrganizationDesign_'
CreateOrganizationDesignRequest:
properties:
description:
type: string
name:
type: string
required:
- name
type: object
UpdateOrganizationDesignRequest:
properties:
extraInstructions:
type: string
nullable: true
description:
type: string
nullable: true
name:
type: string
type: object
ApiSuccess_ApiOrganizationDesignFile_:
properties:
results:
$ref: '#/components/schemas/ApiOrganizationDesignFile'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiOrganizationDesignFileResponse:
$ref: '#/components/schemas/ApiSuccess_ApiOrganizationDesignFile_'
Organization:
properties:
createdAt:
type: string
format: date-time
defaultProjectUuid:
type: string
description: The project a user sees when they first log in to the organization
needsProject:
type: boolean
description: The organization needs a project if it doesn't have at least
one project.
colorPaletteUuid:
type: string
description: The active color palette uuid for all projects in the organization
chartDarkColors:
items:
type: string
type: array
description: The default dark color palette for all projects in the organization
chartColors:
items:
type: string
type: array
description: The default color palette for all projects in the organization
name:
type: string
description: The name of the organization
organizationUuid:
type: string
description: The unique identifier of the organization
format: uuid
required:
- name
- organizationUuid
type: object
description: Details of a user's Organization
ApiOrganization:
properties:
results:
$ref: '#/components/schemas/Organization'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Organization.name_:
properties:
name:
type: string
description: The name of the organization
required:
- name
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateOrganization:
$ref: '#/components/schemas/Pick_Organization.name_'
Partial_Omit_Organization.organizationUuid-or-needsProject__:
properties:
name:
type: string
description: The name of the organization
createdAt:
type: string
format: date-time
colorPaletteUuid:
type: string
description: The active color palette uuid for all projects in the organization
chartColors:
items:
type: string
type: array
description: The default color palette for all projects in the organization
chartDarkColors:
items:
type: string
type: array
description: The default dark color palette for all projects in the organization
defaultProjectUuid:
type: string
description: The project a user sees when they first log in to the organization
type: object
description: Make all properties in T optional
UpdateOrganization:
$ref: '#/components/schemas/Partial_Omit_Organization.organizationUuid-or-needsProject__'
OrganizationProject:
properties:
expiresAt:
type: string
format: date-time
nullable: true
warehouseType:
$ref: '#/components/schemas/WarehouseTypes'
upstreamProjectUuid:
type: string
nullable: true
createdAt:
type: string
format: date-time
createdByUserName:
type: string
nullable: true
createdByUserUuid:
type: string
nullable: true
type:
$ref: '#/components/schemas/ProjectType'
name:
type: string
projectUuid:
type: string
description: The unique identifier of the project
format: uuid
required:
- expiresAt
- upstreamProjectUuid
- createdAt
- createdByUserName
- createdByUserUuid
- type
- name
- projectUuid
type: object
description: Summary of a project under an organization
ApiOrganizationProjects:
properties:
results:
items:
$ref: '#/components/schemas/OrganizationProject'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: List of projects in the current organization
OrganizationMemberProfile:
properties:
isPending:
type: boolean
description: Whether the user doesn't have an authentication method (password
or openId)
isInviteExpired:
type: boolean
description: Whether the user's invite to the organization has expired
isActive:
type: boolean
description: Whether the user can login
roleUuid:
type: string
role:
$ref: '#/components/schemas/OrganizationMemberRole'
description: The role of the user in the organization
organizationUuid:
type: string
description: Unique identifier for the organization the user is a member
of
email:
type: string
lastName:
type: string
firstName:
type: string
userUpdatedAt:
type: string
format: date-time
userCreatedAt:
type: string
format: date-time
userUuid:
type: string
description: Unique identifier for the user
format: uuid
required:
- isActive
- role
- organizationUuid
- email
- lastName
- firstName
- userUpdatedAt
- userCreatedAt
- userUuid
type: object
description: Profile for a user's membership in an organization
KnexPaginatedData_OrganizationMemberProfile-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/OrganizationMemberProfile'
type: array
required:
- data
type: object
ApiOrganizationMemberProfiles:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_OrganizationMemberProfile-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiOrganizationMemberProfile:
properties:
results:
$ref: '#/components/schemas/OrganizationMemberProfile'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UUID:
type: string
format: uuid
description: 'Stringified UUIDv4.
See [RFC 4112](https://tools.ietf.org/html/rfc4122)'
pattern: '[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}'
OrganizationMemberProfileUpdate:
properties:
role:
$ref: '#/components/schemas/OrganizationMemberRole'
required:
- role
type: object
UserSchedulersSummary:
properties:
byProject:
items:
properties:
count:
type: number
format: double
projectName:
type: string
projectUuid:
type: string
required:
- count
- projectName
- projectUuid
type: object
type: array
hasGsheetsSchedulers:
type: boolean
totalCount:
type: number
format: double
required:
- byProject
- hasGsheetsSchedulers
- totalCount
type: object
ApiSuccess_UserSchedulersSummary_:
properties:
results:
$ref: '#/components/schemas/UserSchedulersSummary'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUserSchedulersSummaryResponse:
$ref: '#/components/schemas/ApiSuccess_UserSchedulersSummary_'
ApiSuccess__reassignedCount-number__:
properties:
results:
properties:
reassignedCount:
type: number
format: double
required:
- reassignedCount
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiReassignUserSchedulersResponse:
$ref: '#/components/schemas/ApiSuccess__reassignedCount-number__'
ReassignUserSchedulersRequest:
properties:
newOwnerUserUuid:
type: string
required:
- newOwnerUserUuid
type: object
OrganizationMemberRole.EDITOR:
enum:
- editor
type: string
OrganizationMemberRole.INTERACTIVE_VIEWER:
enum:
- interactive_viewer
type: string
OrganizationMemberRole.VIEWER:
enum:
- viewer
type: string
OrganizationMemberRole.MEMBER:
enum:
- member
type: string
AllowedEmailDomainsRole:
anyOf:
- $ref: '#/components/schemas/OrganizationMemberRole.EDITOR'
- $ref: '#/components/schemas/OrganizationMemberRole.INTERACTIVE_VIEWER'
- $ref: '#/components/schemas/OrganizationMemberRole.VIEWER'
- $ref: '#/components/schemas/OrganizationMemberRole.MEMBER'
ProjectMemberRole.EDITOR:
enum:
- editor
type: string
ProjectMemberRole.INTERACTIVE_VIEWER:
enum:
- interactive_viewer
type: string
ProjectMemberRole.VIEWER:
enum:
- viewer
type: string
AllowedEmailDomainProjectsRole:
anyOf:
- $ref: '#/components/schemas/ProjectMemberRole.EDITOR'
- $ref: '#/components/schemas/ProjectMemberRole.INTERACTIVE_VIEWER'
- $ref: '#/components/schemas/ProjectMemberRole.VIEWER'
AllowedEmailDomains:
properties:
projects:
items:
properties:
role:
$ref: '#/components/schemas/AllowedEmailDomainProjectsRole'
projectUuid:
type: string
required:
- role
- projectUuid
type: object
type: array
role:
$ref: '#/components/schemas/AllowedEmailDomainsRole'
emailDomains:
items:
type: string
type: array
organizationUuid:
type: string
required:
- projects
- role
- emailDomains
- organizationUuid
type: object
ApiOrganizationAllowedEmailDomains:
properties:
results:
$ref: '#/components/schemas/AllowedEmailDomains'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_AllowedEmailDomains.Exclude_keyofAllowedEmailDomains.organizationUuid__:
properties:
role:
$ref: '#/components/schemas/AllowedEmailDomainsRole'
emailDomains:
items:
type: string
type: array
projects:
items:
properties:
role:
$ref: '#/components/schemas/AllowedEmailDomainProjectsRole'
projectUuid:
type: string
required:
- role
- projectUuid
type: object
type: array
required:
- role
- emailDomains
- projects
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_AllowedEmailDomains.organizationUuid_:
$ref: '#/components/schemas/Pick_AllowedEmailDomains.Exclude_keyofAllowedEmailDomains.organizationUuid__'
description: Construct a type with the properties of T except for those in type
K.
UpdateAllowedEmailDomains:
$ref: '#/components/schemas/Omit_AllowedEmailDomains.organizationUuid_'
Group:
properties:
organizationUuid:
type: string
description: The UUID of the organization that the group belongs to
updatedByUserUuid:
type: string
nullable: true
description: The UUID of the user that last updated the group
updatedAt:
type: string
format: date-time
description: The time that the group was last updated
createdByUserUuid:
type: string
nullable: true
description: The UUID of the user that created the group
createdAt:
type: string
format: date-time
description: The time that the group was created
name:
type: string
description: A friendly name for the group
uuid:
type: string
description: The group's UUID
required:
- organizationUuid
- updatedByUserUuid
- updatedAt
- createdByUserUuid
- createdAt
- name
- uuid
type: object
GroupMember:
properties:
lastName:
type: string
description: The user's last name
firstName:
type: string
description: The user's first name
email:
type: string
description: Primary email address for the user
userUuid:
type: string
description: Unique id for the user
format: uuid
required:
- lastName
- firstName
- email
- userUuid
type: object
description: A summary for a Lightdash user within a group
GroupWithMembers:
allOf:
- $ref: '#/components/schemas/Group'
- properties:
memberUuids:
items:
type: string
type: array
members:
items:
$ref: '#/components/schemas/GroupMember'
type: array
description: A list of the group's members.
required:
- memberUuids
- members
type: object
description: Details for a group including a list of the group's members.
ApiCreateGroupResponse:
properties:
results:
$ref: '#/components/schemas/GroupWithMembers'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Group.name_:
properties:
name:
type: string
description: A friendly name for the group
required:
- name
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_GroupMember.userUuid_:
properties:
userUuid:
type: string
description: Unique id for the user
format: uuid
required:
- userUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
CreateGroup:
allOf:
- $ref: '#/components/schemas/Pick_Group.name_'
- properties:
members:
items:
$ref: '#/components/schemas/Pick_GroupMember.userUuid_'
type: array
type: object
KnexPaginatedData_Group-Array-or-GroupWithMembers-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
anyOf:
- items:
$ref: '#/components/schemas/Group'
type: array
- items:
$ref: '#/components/schemas/GroupWithMembers'
type: array
required:
- data
type: object
ApiGroupListResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_Group-Array-or-GroupWithMembers-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
OrganizationColorPalette:
properties:
createdAt:
type: string
format: date-time
darkColors:
items:
type: string
type: array
nullable: true
colors:
items:
type: string
type: array
name:
type: string
organizationUuid:
type: string
colorPaletteUuid:
type: string
required:
- createdAt
- darkColors
- colors
- name
- organizationUuid
- colorPaletteUuid
type: object
ApiCreatedColorPaletteResponse:
properties:
results:
$ref: '#/components/schemas/OrganizationColorPalette'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateColorPalette:
properties:
darkColors:
items:
type: string
type: array
colors:
items:
type: string
type: array
name:
type: string
required:
- colors
- name
type: object
OrganizationColorPaletteWithIsActive:
allOf:
- $ref: '#/components/schemas/OrganizationColorPalette'
- properties:
isActive:
type: boolean
required:
- isActive
type: object
ApiColorPalettesResponse:
properties:
results:
items:
$ref: '#/components/schemas/OrganizationColorPaletteWithIsActive'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiColorPaletteResponse:
properties:
results:
$ref: '#/components/schemas/OrganizationColorPalette'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpdateColorPalette:
properties:
darkColors:
items:
type: string
type: array
colors:
items:
type: string
type: array
name:
type: string
uuid:
type: string
required:
- uuid
type: object
ApiCreateProjectResults:
properties:
contentCopyError:
type: string
hasContentCopy:
type: boolean
project:
$ref: '#/components/schemas/Project'
required:
- hasContentCopy
- project
type: object
ApiSuccess_ApiCreateProjectResults_:
properties:
results:
$ref: '#/components/schemas/ApiCreateProjectResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateProjectTableConfiguration:
enum:
- prod
- all
type: string
Pick_CreateProject.Exclude_keyofCreateProject.warehouseConnection__:
properties:
name:
type: string
type:
$ref: '#/components/schemas/ProjectType'
pinnedListUuid:
type: string
organizationWarehouseCredentialsUuid:
type: string
dbtConnection:
$ref: '#/components/schemas/DbtProjectConfig'
upstreamProjectUuid:
type: string
dbtVersion:
$ref: '#/components/schemas/DbtVersionOption'
projectDefaults:
$ref: '#/components/schemas/ProjectDefaults'
copyWarehouseConnectionFromUpstreamProject:
type: boolean
tableConfiguration:
$ref: '#/components/schemas/CreateProjectTableConfiguration'
copyContent:
type: boolean
expiresInHours:
type: number
format: double
required:
- name
- type
- dbtConnection
- dbtVersion
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_CreateProject.warehouseConnection_:
$ref: '#/components/schemas/Pick_CreateProject.Exclude_keyofCreateProject.warehouseConnection__'
description: Construct a type with the properties of T except for those in type
K.
CreateProjectOptionalCredentials:
allOf:
- $ref: '#/components/schemas/Omit_CreateProject.warehouseConnection_'
- properties:
warehouseConnection:
$ref: '#/components/schemas/CreateWarehouseCredentials'
type: object
ImpersonationOrganizationSettings:
properties:
impersonationEnabled:
type: boolean
organizationUuid:
type: string
required:
- impersonationEnabled
- organizationUuid
type: object
ApiSuccess_ImpersonationOrganizationSettings_:
properties:
results:
$ref: '#/components/schemas/ImpersonationOrganizationSettings'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiImpersonationOrganizationSettingsResponse:
$ref: '#/components/schemas/ApiSuccess_ImpersonationOrganizationSettings_'
UpdateImpersonationOrganizationSettings:
properties:
impersonationEnabled:
type: boolean
required:
- impersonationEnabled
type: object
NotificationBase:
properties:
url:
type: string
message:
type: string
resourceUuid:
type: string
viewed:
type: boolean
createdAt:
type: string
format: date-time
notificationId:
type: string
required:
- viewed
- createdAt
- notificationId
type: object
ApiNotificationResourceType.DashboardComments:
enum:
- dashboardComments
type: string
NotificationDashboardTileCommentMetadata:
properties:
dashboardUuid:
type: string
dashboardName:
type: string
dashboardTileUuid:
type: string
dashboardTileName:
type: string
required:
- dashboardUuid
- dashboardName
- dashboardTileUuid
- dashboardTileName
type: object
additionalProperties: true
NotificationDashboardComment:
allOf:
- $ref: '#/components/schemas/NotificationBase'
- properties:
metadata:
$ref: '#/components/schemas/NotificationDashboardTileCommentMetadata'
resourceType:
$ref: '#/components/schemas/ApiNotificationResourceType.DashboardComments'
required:
- resourceType
type: object
Notification:
$ref: '#/components/schemas/NotificationDashboardComment'
ApiNotificationsResults:
items:
$ref: '#/components/schemas/Notification'
type: array
ApiGetNotifications:
properties:
results:
$ref: '#/components/schemas/ApiNotificationsResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiNotificationResourceType:
enum:
- dashboardComments
type: string
Pick_Notification.viewed_:
properties:
viewed:
type: boolean
required:
- viewed
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiNotificationUpdateParams:
$ref: '#/components/schemas/Pick_Notification.viewed_'
MetricWithAssociatedTimeDimension:
allOf:
- $ref: '#/components/schemas/CompiledMetric'
- properties:
availableTimeDimensions:
items:
allOf:
- $ref: '#/components/schemas/CompiledDimension'
- properties:
type:
anyOf:
- $ref: '#/components/schemas/DimensionType.DATE'
- $ref: '#/components/schemas/DimensionType.TIMESTAMP'
required:
- type
type: object
type: array
timeDimension:
allOf:
- $ref: '#/components/schemas/DefaultTimeDimension'
- properties:
table:
type: string
required:
- table
type: object
type: object
MetricTotalResults:
properties:
metric:
$ref: '#/components/schemas/MetricWithAssociatedTimeDimension'
comparisonValue:
type: number
format: double
nullable: true
value:
type: number
format: double
nullable: true
required:
- metric
- comparisonValue
- value
type: object
ApiMetricsExplorerTotalResults:
properties:
results:
$ref: '#/components/schemas/MetricTotalResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
MetricTotalComparisonType:
enum:
- none
- previous_period
- rolling_days
type: string
ApiCompiledQueryResults:
properties:
compilationErrors:
items:
type: string
type: array
parameterReferences:
items:
type: string
type: array
pivotQuery:
type: string
query:
type: string
required:
- parameterReferences
- query
type: object
ApiStartImpersonationResponse:
properties:
results:
type: number
enum:
- null
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiStartImpersonationRequest:
properties:
targetUserUuid:
type: string
required:
- targetUserUuid
type: object
ApiStopImpersonationResponse:
properties:
results:
type: number
enum:
- null
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGroupResponse:
properties:
results:
anyOf:
- $ref: '#/components/schemas/Group'
- $ref: '#/components/schemas/GroupWithMembers'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGroupMembersResponse:
properties:
results:
items:
$ref: '#/components/schemas/GroupMember'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpdateGroupWithMembers:
properties:
members:
items:
$ref: '#/components/schemas/Pick_GroupMember.userUuid_'
type: array
name:
type: string
type: object
ApiCreateProjectGroupAccess:
properties:
results:
$ref: '#/components/schemas/ProjectGroupAccess'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_CreateProjectGroupAccess.role_:
properties:
role:
anyOf:
- $ref: '#/components/schemas/ProjectMemberRole'
- allOf:
- type: string
- properties: {}
type: object
required:
- role
type: object
description: From T, pick a set of properties whose keys are in the union K
ApiUpdateProjectGroupAccess:
properties:
results:
$ref: '#/components/schemas/ProjectGroupAccess'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpdateDBProjectGroupAccess:
properties:
role_uuid:
type: string
nullable: true
role:
$ref: '#/components/schemas/ProjectMemberRole'
required:
- role
type: object
ApiGdriveAccessTokenResponse:
properties:
results:
type: string
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CustomLabel:
properties: {}
additionalProperties:
type: string
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
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
GitRepo:
properties:
defaultBranch:
type: string
ownerLogin:
type: string
fullName:
type: string
name:
type: string
required:
- defaultBranch
- ownerLogin
- fullName
- name
type: object
GithubUserCredential:
properties:
createdAt:
type: string
format: date-time
githubLogin:
type: string
required:
- createdAt
- githubLogin
type: object
description: 'A user''s personally linked GitHub account. When present, write-backs
are
authored as this user instead of the Lightdash GitHub App bot.'
ApiGithubUserCredentialResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/GithubUserCredential'
nullable: true
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
GitIntegrationConfiguration:
properties:
installationId:
type: string
enabled:
type: boolean
required:
- enabled
type: object
ApiGitFileContent:
properties:
filePath:
type: string
sha:
type: string
content:
type: string
required:
- filePath
- sha
- content
type: object
GitBranch:
properties:
isProtected:
type: boolean
description: TRUE if direct writes are blocked (GitHub protection OR project's
configured branch)
name:
type: string
required:
- isProtected
- name
type: object
ApiGitBranchesResponse:
properties:
results:
items:
$ref: '#/components/schemas/GitBranch'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
GitFileEntry:
properties:
sha:
type: string
size:
type: number
format: double
type:
type: string
enum:
- file
- dir
path:
type: string
name:
type: string
required:
- sha
- size
- type
- path
- name
type: object
GitFileOrDirectory:
anyOf:
- properties:
entries:
items:
$ref: '#/components/schemas/GitFileEntry'
type: array
type:
type: string
enum:
- directory
nullable: false
required:
- entries
- type
type: object
- properties:
path:
type: string
sha:
type: string
content:
type: string
type:
type: string
enum:
- file
nullable: false
required:
- path
- sha
- content
- type
type: object
ApiGitFileOrDirectoryResponse:
properties:
results:
$ref: '#/components/schemas/GitFileOrDirectory'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGitFileSavedResponse:
properties:
results:
properties:
path:
type: string
sha:
type: string
required:
- path
- sha
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGitFileDeletedResponse:
properties:
results:
properties:
deleted:
type: boolean
enum:
- true
nullable: false
required:
- deleted
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGitBranchCreatedResponse:
properties:
results:
$ref: '#/components/schemas/GitBranch'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateGitBranchRequest:
properties:
sourceBranch:
type: string
name:
type: string
required:
- sourceBranch
- name
type: object
ApiGitPullRequestCreatedResponse:
properties:
results:
$ref: '#/components/schemas/PullRequestCreated'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CreateGitPullRequestRequest:
properties:
description:
type: string
title:
type: string
required:
- description
- title
type: object
ApiFunnelEventNamesResponse:
properties:
results:
items:
type: string
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FunnelStepResult:
properties:
breakdownValue:
type: string
medianTimeToConvertSeconds:
type: number
format: double
nullable: true
stepConversionRate:
type: number
format: double
conversionRate:
type: number
format: double
totalUsers:
type: number
format: double
stepName:
type: string
stepOrder:
type: number
format: double
required:
- medianTimeToConvertSeconds
- stepConversionRate
- conversionRate
- totalUsers
- stepName
- stepOrder
type: object
FunnelQueryResult:
properties:
sql:
type: string
steps:
items:
$ref: '#/components/schemas/FunnelStepResult'
type: array
required:
- sql
- steps
type: object
ApiFunnelQueryResponse:
properties:
results:
$ref: '#/components/schemas/FunnelQueryResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FunnelStep:
properties:
eventName:
type: string
stepOrder:
type: number
format: double
required:
- eventName
- stepOrder
type: object
Exclude_FunnelDatePreset.custom_:
type: string
enum:
- last_7_days
- last_14_days
- last_30_days
- last_90_days
- last_6_months
- last_12_months
description: Exclude from T those types that are assignable to U
FunnelDateRange:
anyOf:
- properties:
preset:
$ref: '#/components/schemas/Exclude_FunnelDatePreset.custom_'
type:
type: string
enum:
- preset
nullable: false
required:
- preset
- type
type: object
- properties:
end:
type: string
start:
type: string
type:
type: string
enum:
- custom
nullable: false
required:
- end
- start
- type
type: object
FunnelConversionWindowUnit:
type: string
enum:
- hours
- days
- weeks
FunnelQueryRequest:
properties:
breakdownDimensionId:
type: string
conversionWindow:
properties:
unit:
$ref: '#/components/schemas/FunnelConversionWindowUnit'
value:
type: number
format: double
required:
- unit
- value
type: object
dateRange:
$ref: '#/components/schemas/FunnelDateRange'
steps:
items:
$ref: '#/components/schemas/FunnelStep'
type: array
eventNameFieldId:
type: string
userIdFieldId:
type: string
timestampFieldId:
type: string
exploreName:
type: string
required:
- dateRange
- steps
- eventNameFieldId
- userIdFieldId
- timestampFieldId
- exploreName
type: object
FavoriteItems:
items:
anyOf:
- $ref: '#/components/schemas/ResourceViewChartItem'
- $ref: '#/components/schemas/ResourceViewDashboardItem'
- $ref: '#/components/schemas/ResourceViewSpaceItem'
- $ref: '#/components/schemas/ResourceViewDataAppItem'
type: array
ApiFavoriteItems:
properties:
results:
$ref: '#/components/schemas/FavoriteItems'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ToggleFavoriteResponse:
properties:
contentUuid:
type: string
contentType:
$ref: '#/components/schemas/ContentType'
isFavorite:
type: boolean
required:
- contentUuid
- contentType
- isFavorite
type: object
ApiToggleFavorite:
properties:
results:
$ref: '#/components/schemas/ToggleFavoriteResponse'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ToggleFavoriteRequest:
properties:
contentUuid:
type: string
contentType:
$ref: '#/components/schemas/ContentType'
required:
- contentUuid
- contentType
type: object
NonNullable_Explore-at-warnings_:
allOf:
- items:
$ref: '#/components/schemas/InlineError'
type: array
- properties: {}
type: object
description: Exclude null and undefined from T
ExploreWarningSummary:
allOf:
- $ref: '#/components/schemas/Pick_Explore.name_'
- properties:
warnings:
$ref: '#/components/schemas/NonNullable_Explore-at-warnings_'
required:
- warnings
type: object
ExploreWarningReport:
properties:
exploresWithWarnings:
items:
$ref: '#/components/schemas/ExploreWarningSummary'
type: array
warningExploreCount:
type: number
format: double
warningCount:
type: number
format: double
required:
- exploresWithWarnings
- warningExploreCount
- warningCount
type: object
ApiDeployExploresResults:
properties:
warnings:
$ref: '#/components/schemas/ExploreWarningReport'
exploreCount:
type: number
format: double
required:
- warnings
- exploreCount
type: object
ApiSetExploresResponse:
properties:
results:
$ref: '#/components/schemas/ApiDeployExploresResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Explore.SummaryExploreFields_:
properties:
name:
type: string
type:
$ref: '#/components/schemas/ExploreType'
label:
type: string
tags:
items:
type: string
type: array
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
preAggregateSource:
$ref: '#/components/schemas/PreAggregateSource'
warnings:
items:
$ref: '#/components/schemas/InlineError'
type: array
description: 'Non-fatal warnings from partial compilation.
Present when some joins or fields failed to compile but the explore is
still usable.
Only populated when PARTIAL_COMPILATION_ENABLED=true.'
required:
- name
- label
- tags
type: object
description: From T, pick a set of properties whose keys are in the union K
SummaryExtraFields:
properties:
databaseName:
type: string
schemaName:
type: string
description:
type: string
required:
- databaseName
- schemaName
type: object
Pick_ExploreError.SummaryExploreErrorFields_:
properties:
name:
type: string
type:
$ref: '#/components/schemas/ExploreType'
label:
type: string
tags:
items:
type: string
type: array
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
errors:
items:
$ref: '#/components/schemas/InlineError'
type: array
required:
- name
- label
- errors
type: object
description: From T, pick a set of properties whose keys are in the union K
Partial_SummaryExtraFields_:
properties:
description:
type: string
schemaName:
type: string
databaseName:
type: string
type: object
description: Make all properties in T optional
SummaryExplore:
anyOf:
- allOf:
- $ref: '#/components/schemas/Pick_Explore.SummaryExploreFields_'
- $ref: '#/components/schemas/SummaryExtraFields'
- allOf:
- $ref: '#/components/schemas/Pick_ExploreError.SummaryExploreErrorFields_'
- $ref: '#/components/schemas/Partial_SummaryExtraFields_'
ApiExploresResults:
items:
$ref: '#/components/schemas/SummaryExplore'
type: array
Pick_Explore.Exclude_keyofExplore.unfilteredTables__:
properties:
name:
type: string
type:
$ref: '#/components/schemas/ExploreType'
spotlight:
properties:
owner:
type: string
categories:
items:
type: string
type: array
visibility:
type: string
enum:
- show
- hide
required:
- visibility
type: object
label:
type: string
parameters:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
tags:
items:
type: string
type: array
warehouse:
type: string
caseSensitive:
type: boolean
groupLabel:
type: string
deprecated: true
groups:
items:
type: string
type: array
description: 'Nested groups for the sidebar (max 3 levels). Group keys resolve
to
labels/descriptions via the project-level `table_groups` config
(fetched separately); missing keys fall back to using the key as
the label.'
baseTable:
type: string
joinedTables:
items:
$ref: '#/components/schemas/CompiledExploreJoin'
type: array
tables:
properties: {}
additionalProperties:
$ref: '#/components/schemas/CompiledTable'
type: object
targetDatabase:
$ref: '#/components/schemas/SupportedDbtAdapter'
databricksCompute:
type: string
ymlPath:
type: string
sqlPath:
type: string
aiHint:
anyOf:
- type: string
- items:
type: string
type: array
savedParameterValues:
$ref: '#/components/schemas/ParametersValuesMap'
preAggregates:
items:
$ref: '#/components/schemas/PreAggregateDef'
type: array
preAggregateSource:
$ref: '#/components/schemas/PreAggregateSource'
warnings:
items:
$ref: '#/components/schemas/InlineError'
type: array
description: 'Non-fatal warnings from partial compilation.
Present when some joins or fields failed to compile but the explore is
still usable.
Only populated when PARTIAL_COMPILATION_ENABLED=true.'
required:
- name
- label
- tags
- baseTable
- joinedTables
- tables
- targetDatabase
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_Explore.unfilteredTables_:
$ref: '#/components/schemas/Pick_Explore.Exclude_keyofExplore.unfilteredTables__'
description: Construct a type with the properties of T except for those in type
K.
ApiExploreResults:
$ref: '#/components/schemas/Omit_Explore.unfilteredTables_'
PreAggregateCheckResult:
anyOf:
- properties:
preAggregateExploreName:
type: string
preAggregateName:
type: string
hit:
type: boolean
enum:
- true
nullable: false
required:
- preAggregateExploreName
- preAggregateName
- hit
type: object
- properties:
reason:
$ref: '#/components/schemas/PreAggregateMatchMiss'
hit:
type: boolean
enum:
- false
nullable: false
required:
- reason
- hit
type: object
ApiPreAggregateCheckResponse:
properties:
results:
$ref: '#/components/schemas/PreAggregateCheckResult'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiFormulaValidationResults:
anyOf:
- properties:
compiledSql:
type: string
valid:
type: boolean
enum:
- true
nullable: false
required:
- compiledSql
- valid
type: object
- properties:
error:
type: string
valid:
type: boolean
enum:
- false
nullable: false
required:
- error
- valid
type: object
ApiPromoteDashboardResponse:
properties:
results:
$ref: '#/components/schemas/DashboardDAO'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_UpdatedByUser.userUuid-or-firstName-or-lastName_:
properties:
userUuid:
type: string
firstName:
type: string
lastName:
type: string
required:
- userUuid
- firstName
- lastName
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardVersionSummary:
properties:
createdBy:
allOf:
- $ref: '#/components/schemas/Pick_UpdatedByUser.userUuid-or-firstName-or-lastName_'
nullable: true
createdAt:
type: string
format: date-time
versionUuid:
type: string
dashboardUuid:
type: string
required:
- createdBy
- createdAt
- versionUuid
- dashboardUuid
type: object
DashboardHistory:
properties:
history:
items:
$ref: '#/components/schemas/DashboardVersionSummary'
type: array
required:
- history
type: object
ApiGetDashboardHistoryResponse:
properties:
results:
$ref: '#/components/schemas/DashboardHistory'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ChartVersionDifference:
properties:
selectedVersion:
allOf:
- $ref: '#/components/schemas/ChartVersionSummary'
nullable: true
currentVersion:
allOf:
- $ref: '#/components/schemas/ChartVersionSummary'
nullable: true
chartName:
type: string
nullable: true
chartUuid:
type: string
tileUuid:
type: string
required:
- chartName
- chartUuid
- tileUuid
type: object
DashboardVersion:
allOf:
- $ref: '#/components/schemas/DashboardVersionSummary'
- properties:
chartVersionDifferences:
items:
$ref: '#/components/schemas/ChartVersionDifference'
type: array
dashboard:
$ref: '#/components/schemas/Dashboard'
required:
- dashboard
type: object
ApiGetDashboardVersionResponse:
properties:
results:
$ref: '#/components/schemas/DashboardVersion'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiDashboardSchedulersResponse:
properties:
results:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateDashboardSchedulerResponse:
properties:
results:
$ref: '#/components/schemas/SchedulerAndTargets'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCsvUrlResponse:
properties:
results:
properties:
truncated:
type: boolean
status:
type: string
url:
type: string
required:
- truncated
- status
- url
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateComment:
properties:
results:
type: string
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_Comment.text-or-replyTo-or-mentions-or-textHtml_:
properties:
text:
type: string
replyTo:
type: string
mentions:
items:
type: string
type: array
textHtml:
type: string
required:
- text
- mentions
- textHtml
type: object
description: From T, pick a set of properties whose keys are in the union K
Comment:
properties:
mentions:
items:
type: string
type: array
canRemove:
type: boolean
resolved:
type: boolean
replies:
items:
$ref: '#/components/schemas/Comment'
type: array
replyTo:
type: string
user:
properties:
name:
type: string
required:
- name
type: object
createdAt:
type: string
format: date-time
textHtml:
type: string
text:
type: string
commentId:
type: string
required:
- mentions
- canRemove
- resolved
- user
- createdAt
- textHtml
- text
- commentId
type: object
ApiGetComments:
properties:
results:
properties: {}
additionalProperties:
items:
$ref: '#/components/schemas/Comment'
type: array
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiResolveComment:
properties:
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
Pick_Field.name-or-label-or-fieldType-or-tableLabel-or-description_:
properties:
description:
type: string
name:
type: string
label:
type: string
fieldType:
$ref: '#/components/schemas/FieldType'
tableLabel:
type: string
required:
- name
- label
- fieldType
- tableLabel
type: object
description: From T, pick a set of properties whose keys are in the union K
Pick_Dimension.requiredAttributes-or-anyAttributes_:
properties:
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
type: object
description: From T, pick a set of properties whose keys are in the union K
CatalogType.Field:
enum:
- field
type: string
Pick_Tag.name-or-color-or-tagUuid-or-yamlReference_:
properties:
name:
type: string
color:
type: string
tagUuid:
type: string
yamlReference:
type: string
nullable: true
required:
- name
- color
- tagUuid
- yamlReference
type: object
description: From T, pick a set of properties whose keys are in the union K
EmojiIcon:
properties:
unicode:
type: string
required:
- unicode
type: object
CustomIcon:
properties:
url:
type: string
required:
- url
type: object
CatalogItemIcon:
anyOf:
- $ref: '#/components/schemas/EmojiIcon'
- $ref: '#/components/schemas/CustomIcon'
CatalogOwner:
properties:
email:
type: string
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- email
- lastName
- firstName
- userUuid
type: object
CatalogField:
allOf:
- $ref: '#/components/schemas/Pick_Field.name-or-label-or-fieldType-or-tableLabel-or-description_'
- $ref: '#/components/schemas/Pick_Dimension.requiredAttributes-or-anyAttributes_'
- properties:
owner:
allOf:
- $ref: '#/components/schemas/CatalogOwner'
nullable: true
spotlightDefaultFilter:
$ref: '#/components/schemas/MetricFilterRule'
spotlightDefaultSegment:
type: string
spotlightSegmentBy:
items:
type: string
type: array
spotlightFilterBy:
items:
type: string
type: array
searchRank:
type: number
format: double
aiHints:
items:
type: string
type: array
nullable: true
icon:
allOf:
- $ref: '#/components/schemas/CatalogItemIcon'
nullable: true
verifiedChartUsage:
type: number
format: double
chartUsage:
type: number
format: double
categories:
items:
$ref: '#/components/schemas/Pick_Tag.name-or-color-or-tagUuid-or-yamlReference_'
type: array
tags:
items:
type: string
type: array
tableGroupLabel:
type: string
tableName:
type: string
fieldValueType:
anyOf:
- $ref: '#/components/schemas/MetricType'
- $ref: '#/components/schemas/DimensionType'
basicType:
type: string
enum:
- string
- number
- date
- timestamp
- boolean
type:
$ref: '#/components/schemas/CatalogType.Field'
catalogSearchUuid:
type: string
required:
- owner
- aiHints
- icon
- categories
- tableName
- fieldValueType
- basicType
- type
- catalogSearchUuid
type: object
Pick_TableBase.name-or-label-or-groupLabel-or-description-or-requiredAttributes-or-anyAttributes_:
properties:
description:
type: string
name:
type: string
label:
type: string
groupLabel:
type: string
requiredAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
anyAttributes:
$ref: '#/components/schemas/Record_string.string-or-string-Array_'
required:
- name
- label
type: object
description: From T, pick a set of properties whose keys are in the union K
CatalogType.Table:
enum:
- table
type: string
CatalogTable:
allOf:
- $ref: '#/components/schemas/Pick_TableBase.name-or-label-or-groupLabel-or-description-or-requiredAttributes-or-anyAttributes_'
- properties:
searchRank:
type: number
format: double
joinedTables:
items:
type: string
type: array
nullable: true
aiHints:
items:
type: string
type: array
nullable: true
icon:
allOf:
- $ref: '#/components/schemas/CatalogItemIcon'
nullable: true
chartUsage:
type: number
format: double
categories:
items:
$ref: '#/components/schemas/Pick_Tag.name-or-color-or-tagUuid-or-yamlReference_'
type: array
tags:
items:
type: string
type: array
groupLabel:
type: string
type:
$ref: '#/components/schemas/CatalogType.Table'
errors:
items:
$ref: '#/components/schemas/InlineError'
type: array
catalogSearchUuid:
type: string
required:
- joinedTables
- aiHints
- icon
- categories
- type
- catalogSearchUuid
type: object
CatalogItem:
anyOf:
- $ref: '#/components/schemas/CatalogField'
- $ref: '#/components/schemas/CatalogTable'
ApiCatalogResults:
items:
$ref: '#/components/schemas/CatalogItem'
type: array
CatalogType:
enum:
- table
- field
type: string
CatalogFilter:
enum:
- tables
- dimensions
- metrics
type: string
MetricsTreeSource:
type: string
enum:
- ui
- yaml
MetricsTree:
properties:
generation:
type: number
format: double
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedByUserUuid:
type: string
nullable: true
createdByUserUuid:
type: string
nullable: true
source:
$ref: '#/components/schemas/MetricsTreeSource'
description:
type: string
nullable: true
name:
type: string
slug:
type: string
projectUuid:
type: string
metricsTreeUuid:
type: string
required:
- generation
- updatedAt
- createdAt
- updatedByUserUuid
- createdByUserUuid
- source
- description
- name
- slug
- projectUuid
- metricsTreeUuid
type: object
MetricsTreeLockInfo:
properties:
acquiredAt:
type: string
format: date-time
lockedByUserName:
type: string
lockedByUserUuid:
type: string
required:
- acquiredAt
- lockedByUserName
- lockedByUserUuid
type: object
MetricsTreeSummary:
allOf:
- $ref: '#/components/schemas/MetricsTree'
- properties:
lock:
allOf:
- $ref: '#/components/schemas/MetricsTreeLockInfo'
nullable: true
nodeCount:
type: number
format: double
required:
- lock
- nodeCount
type: object
KnexPaginatedData_MetricsTreeSummary-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/MetricsTreeSummary'
type: array
required:
- data
type: object
ApiGetMetricsTreesResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_MetricsTreeSummary-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
MetricsTreeNodePosition:
properties:
yPosition:
type: number
format: double
nullable: true
xPosition:
type: number
format: double
nullable: true
catalogSearchUuid:
type: string
required:
- yPosition
- xPosition
- catalogSearchUuid
type: object
MetricsTreeNode:
allOf:
- $ref: '#/components/schemas/MetricsTreeNodePosition'
- properties:
source:
$ref: '#/components/schemas/MetricsTreeSource'
tableName:
type: string
name:
type: string
required:
- source
- tableName
- name
type: object
Pick_CatalogField.catalogSearchUuid-or-name-or-tableName_:
properties:
name:
type: string
tableName:
type: string
catalogSearchUuid:
type: string
required:
- name
- tableName
- catalogSearchUuid
type: object
description: From T, pick a set of properties whose keys are in the union K
CatalogMetricsTreeNode:
$ref: '#/components/schemas/Pick_CatalogField.catalogSearchUuid-or-name-or-tableName_'
CatalogMetricsTreeEdge:
properties:
createdFrom:
$ref: '#/components/schemas/MetricsTreeSource'
projectUuid:
type: string
createdByUserUuid:
type: string
nullable: true
createdAt:
type: string
format: date-time
target:
$ref: '#/components/schemas/CatalogMetricsTreeNode'
source:
$ref: '#/components/schemas/CatalogMetricsTreeNode'
required:
- createdFrom
- projectUuid
- createdByUserUuid
- createdAt
- target
- source
type: object
MetricsTreeWithDetails:
allOf:
- $ref: '#/components/schemas/MetricsTree'
- properties:
lock:
allOf:
- $ref: '#/components/schemas/MetricsTreeLockInfo'
nullable: true
edges:
items:
$ref: '#/components/schemas/CatalogMetricsTreeEdge'
type: array
nodes:
items:
$ref: '#/components/schemas/MetricsTreeNode'
type: array
required:
- lock
- edges
- nodes
type: object
ApiGetMetricsTreeResponse:
properties:
results:
$ref: '#/components/schemas/MetricsTreeWithDetails'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateMetricsTreeResponse:
properties:
results:
$ref: '#/components/schemas/MetricsTree'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiCreateMetricsTreePayload:
properties:
edges:
items:
properties:
targetCatalogSearchUuid:
type: string
sourceCatalogSearchUuid:
type: string
required:
- targetCatalogSearchUuid
- sourceCatalogSearchUuid
type: object
type: array
nodes:
items:
properties:
yPosition:
type: number
format: double
xPosition:
type: number
format: double
catalogSearchUuid:
type: string
required:
- catalogSearchUuid
type: object
type: array
source:
$ref: '#/components/schemas/MetricsTreeSource'
description:
type: string
slug:
type: string
name:
type: string
required:
- edges
- nodes
- name
type: object
ApiUpdateMetricsTreeResponse:
properties:
results:
$ref: '#/components/schemas/MetricsTreeWithDetails'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiUpdateMetricsTreePayload:
properties:
edges:
items:
properties:
targetCatalogSearchUuid:
type: string
sourceCatalogSearchUuid:
type: string
required:
- targetCatalogSearchUuid
- sourceCatalogSearchUuid
type: object
type: array
nodes:
items:
properties:
yPosition:
type: number
format: double
xPosition:
type: number
format: double
catalogSearchUuid:
type: string
required:
- catalogSearchUuid
type: object
type: array
expectedGeneration:
type: number
format: double
description: The generation the client was editing. Used for conflict detection.
description:
type: string
name:
type: string
required:
- edges
- nodes
- expectedGeneration
type: object
ApiMetricsTreeLockResponse:
properties:
results:
$ref: '#/components/schemas/MetricsTreeLockInfo'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CatalogMetadata:
properties:
fieldType:
$ref: '#/components/schemas/FieldType'
tableLabel:
type: string
joinedTables:
items:
type: string
type: array
fields:
items:
$ref: '#/components/schemas/CatalogField'
type: array
source:
type: string
modelName:
type: string
label:
type: string
description:
type: string
name:
type: string
required:
- joinedTables
- fields
- modelName
- label
- name
type: object
ApiCatalogMetadataResults:
$ref: '#/components/schemas/CatalogMetadata'
Pick_ChartSummary.uuid-or-name-or-description-or-spaceUuid-or-spaceName-or-dashboardName-or-dashboardUuid-or-chartKind_:
properties:
description:
type: string
description: Optional description of what this chart displays
name:
type: string
description: Display name of the chart
uuid:
type: string
spaceUuid:
type: string
dashboardUuid:
type: string
nullable: true
spaceName:
type: string
dashboardName:
type: string
nullable: true
chartKind:
$ref: '#/components/schemas/ChartKind'
required:
- name
- uuid
- spaceUuid
- dashboardUuid
- spaceName
- dashboardName
type: object
description: From T, pick a set of properties whose keys are in the union K
CatalogAnalytics:
properties:
charts:
items:
allOf:
- $ref: '#/components/schemas/Pick_ChartSummary.uuid-or-name-or-description-or-spaceUuid-or-spaceName-or-dashboardName-or-dashboardUuid-or-chartKind_'
- properties:
viewsCount:
type: number
format: double
type: object
type: array
required:
- charts
type: object
ApiCatalogAnalyticsResults:
$ref: '#/components/schemas/CatalogAnalytics'
ApiMetricsCatalogResults:
items:
$ref: '#/components/schemas/CatalogField'
type: array
KnexPaginatedData_ApiMetricsCatalogResults_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
$ref: '#/components/schemas/ApiMetricsCatalogResults'
required:
- data
type: object
ApiMetricsCatalog:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_ApiMetricsCatalogResults_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSortDirection:
type: string
enum:
- asc
- desc
CatalogCategoryFilterMode:
enum:
- and
- or
type: string
ApiGetAllMetricsTreeEdges:
properties:
results:
properties:
edges:
items:
$ref: '#/components/schemas/CatalogMetricsTreeEdge'
type: array
required:
- edges
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetMetricPeek:
properties:
results:
$ref: '#/components/schemas/MetricWithAssociatedTimeDimension'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiMetricsWithAssociatedTimeDimensionResponse:
properties:
results:
items:
$ref: '#/components/schemas/MetricWithAssociatedTimeDimension'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiFilterDimensionsResponse:
properties:
results:
items:
$ref: '#/components/schemas/CompiledDimension'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSegmentDimensionsResponse:
properties:
results:
items:
$ref: '#/components/schemas/CompiledDimension'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetMetricsTree:
properties:
results:
properties:
edges:
items:
$ref: '#/components/schemas/CatalogMetricsTreeEdge'
type: array
required:
- edges
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiGetMetricsTreePayload:
properties:
metricUuids:
items:
type: string
type: array
required:
- metricUuids
type: object
ApiMetricsTreeEdgePayload:
properties:
targetCatalogSearchUuid:
type: string
sourceCatalogSearchUuid:
type: string
required:
- targetCatalogSearchUuid
- sourceCatalogSearchUuid
type: object
BigqueryDataset:
properties:
datasetId:
type: string
location:
type: string
projectId:
type: string
required:
- datasetId
- projectId
type: object
ApiBigqueryDatasets:
properties:
results:
items:
$ref: '#/components/schemas/BigqueryDataset'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
BigqueryProject:
properties:
friendlyName:
type: string
nullable: true
projectId:
type: string
required:
- friendlyName
- projectId
type: object
ApiBigqueryProjects:
properties:
results:
items:
$ref: '#/components/schemas/BigqueryProject'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
RoleAssignment:
properties:
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
projectId:
type: string
organizationId:
type: string
assigneeName:
type: string
assigneeId:
type: string
assigneeType:
type: string
enum:
- user
- group
ownerType:
type: string
enum:
- user
- system
roleName:
type: string
roleId:
type: string
required:
- updatedAt
- createdAt
- assigneeName
- assigneeId
- assigneeType
- ownerType
- roleName
- roleId
type: object
ApiRoleAssignmentListResponse:
properties:
results:
items:
$ref: '#/components/schemas/RoleAssignment'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRoleAssignmentResponse:
properties:
results:
$ref: '#/components/schemas/RoleAssignment'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
UpsertUserRoleAssignmentRequest:
properties:
sendEmail:
type: boolean
roleId:
type: string
required:
- roleId
type: object
UpdateRoleAssignmentRequest:
properties:
roleId:
type: string
required:
- roleId
type: object
RoleWithScopes:
allOf:
- $ref: '#/components/schemas/Role'
- properties:
scopes:
items:
type: string
type: array
required:
- scopes
type: object
ApiGetRolesResponse:
properties:
results:
anyOf:
- items:
$ref: '#/components/schemas/Role'
type: array
- items:
$ref: '#/components/schemas/RoleWithScopes'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiRoleWithScopesResponse:
properties:
results:
$ref: '#/components/schemas/RoleWithScopes'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ChangesetTSOACompat:
$ref: '#/components/schemas/Record_string.unknown_'
ApiChangesetsResponseTSOACompat:
properties:
results:
items:
$ref: '#/components/schemas/ChangesetTSOACompat'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ChangeTSOACompat:
$ref: '#/components/schemas/Record_string.unknown_'
ApiGetChangeResponseTSOACompat:
properties:
results:
$ref: '#/components/schemas/ChangeTSOACompat'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
KnexPaginatedData_ValidationResponse-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/ValidationResponse'
type: array
required:
- data
type: object
ApiSuccess_KnexPaginatedData_ValidationResponse-Array__:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_ValidationResponse-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiPaginatedValidateResponse:
$ref: '#/components/schemas/ApiSuccess_KnexPaginatedData_ValidationResponse-Array__'
ApiSuccess_ValidationResponse_:
properties:
results:
$ref: '#/components/schemas/ValidationResponse'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSingleValidationResponse:
$ref: '#/components/schemas/ApiSuccess_ValidationResponse_'
ApiSavedChartPaginatedSchedulersResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SchedulerAndTargets-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ResultsPaginationMetadata_ResultRow_:
allOf:
- allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
- properties:
previousPage:
type: number
format: double
nextPage:
type: number
format: double
type: object
ResultValue:
properties:
formatted:
type: string
raw: {}
required:
- formatted
- raw
type: object
Record_string._value-ResultValue__:
properties: {}
additionalProperties:
properties:
value:
$ref: '#/components/schemas/ResultValue'
required:
- value
type: object
type: object
description: Construct a type with a set of properties K of type T
ResultRow:
$ref: '#/components/schemas/Record_string._value-ResultValue__'
QueryResultsPerformance:
properties:
queueTimeMs:
type: number
format: double
nullable: true
resultsPageExecutionMs:
type: number
format: double
initialQueryExecutionMs:
type: number
format: double
nullable: true
required:
- queueTimeMs
- resultsPageExecutionMs
- initialQueryExecutionMs
type: object
QueryResultsMetadata:
properties:
performance:
$ref: '#/components/schemas/QueryResultsPerformance'
required:
- performance
type: object
QueryHistoryStatus.READY:
enum:
- ready
type: string
PivotValuesColumn:
properties:
columnIndex:
type: number
format: double
pivotValues:
items:
properties:
formatted:
type: string
value: {}
referenceField:
type: string
required:
- value
- referenceField
type: object
type: array
aggregation:
$ref: '#/components/schemas/VizAggregationOptions'
pivotColumnName:
type: string
referenceField:
type: string
required:
- pivotValues
- aggregation
- pivotColumnName
- referenceField
type: object
ReadyQueryResultsPage:
allOf:
- $ref: '#/components/schemas/ResultsPaginationMetadata_ResultRow_'
- properties:
pivotDetails:
properties:
passthroughDimensions:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
originalColumns:
$ref: '#/components/schemas/ResultColumns'
sortBy:
$ref: '#/components/schemas/SortBy'
groupByColumns:
items:
$ref: '#/components/schemas/GroupByColumn'
type: array
valuesColumns:
items:
$ref: '#/components/schemas/PivotValuesColumn'
type: array
indexColumn:
anyOf:
- $ref: '#/components/schemas/PivotIndexColum'
- items:
$ref: '#/components/schemas/PivotIndexColum'
type: array
totalColumnCount:
type: number
format: double
nullable: true
required:
- originalColumns
- valuesColumns
- totalColumnCount
type: object
nullable: true
status:
$ref: '#/components/schemas/QueryHistoryStatus.READY'
metadata:
$ref: '#/components/schemas/QueryResultsMetadata'
rows:
items:
$ref: '#/components/schemas/ResultRow'
type: array
columns:
$ref: '#/components/schemas/ResultColumns'
queryUuid:
type: string
required:
- pivotDetails
- status
- metadata
- rows
- columns
- queryUuid
type: object
QueryHistoryStatus.PENDING:
enum:
- pending
type: string
QueryHistoryStatus.QUEUED:
enum:
- queued
type: string
QueryHistoryStatus.EXECUTING:
enum:
- executing
type: string
QueryHistoryStatus.CANCELLED:
enum:
- cancelled
type: string
QueryHistoryStatus.ERROR:
enum:
- error
type: string
QueryHistoryStatus.EXPIRED:
enum:
- expired
type: string
ApiGetAsyncQueryResults:
anyOf:
- $ref: '#/components/schemas/ReadyQueryResultsPage'
- properties:
queryUuid:
type: string
status:
anyOf:
- $ref: '#/components/schemas/QueryHistoryStatus.PENDING'
- $ref: '#/components/schemas/QueryHistoryStatus.QUEUED'
- $ref: '#/components/schemas/QueryHistoryStatus.EXECUTING'
- $ref: '#/components/schemas/QueryHistoryStatus.CANCELLED'
required:
- queryUuid
- status
type: object
- properties:
erroredAt:
type: string
format: date-time
nullable: true
error:
type: string
nullable: true
queryUuid:
type: string
status:
anyOf:
- $ref: '#/components/schemas/QueryHistoryStatus.ERROR'
- $ref: '#/components/schemas/QueryHistoryStatus.EXPIRED'
required:
- error
- queryUuid
- status
type: object
ApiGetAsyncQueryResultsResponse:
properties:
results:
$ref: '#/components/schemas/ApiGetAsyncQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSuccess_ApiExecuteAsyncMetricQueryResults_:
properties:
results:
$ref: '#/components/schemas/ApiExecuteAsyncMetricQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CalculateTotalKind:
type: string
enum:
- columnTotal
- rowTotal
- columnSubtotal
description: 'Kinds of totals derivable from an executed pivot query. Follow-up
PRs
will widen the union to enable the commented-out variants below.'
ExecuteAsyncCalculateTotalRequestParams:
properties:
invalidateCache:
type: boolean
subtotalDimensions:
items:
type: string
type: array
kind:
$ref: '#/components/schemas/CalculateTotalKind'
required:
- kind
type: object
QueryExecutionContext:
enum:
- dashboardView
- autorefreshedDashboard
- exploreView
- filterAutocomplete
- chartView
- chartHistory
- sqlChartView
- sqlRunner
- viewUnderlyingData
- alert
- scheduledDelivery
- csvDownload
- gsheets
- scheduledGsheetsChart
- scheduledGsheetsDashboard
- scheduledGsheetsSqlChart
- scheduledChart
- scheduledDashboard
- calculateTotal
- calculateSubtotal
- embed
- ai
- mcp.run_metric_query
- mcp.run_sql
- mcp.search_field_values
- api
- cli
- metricsExplorer
- preAggregateMaterialization
- dataAppSample
type: string
CommonExecuteQueryRequestParams:
properties:
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
usePreAggregateCache:
type: boolean
invalidateCache:
type: boolean
context:
$ref: '#/components/schemas/QueryExecutionContext'
type: object
Pick_MetricQueryRequest.Exclude_keyofMetricQueryRequest.csvLimit__:
properties:
dateZoom:
$ref: '#/components/schemas/DateZoom'
limit:
type: number
format: double
timezone:
type: string
filters:
properties:
tableCalculations: {}
metrics: {}
dimensions: {}
type: object
exploreName:
type: string
dimensions:
items:
type: string
type: array
metrics:
items:
type: string
type: array
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
tableCalculations:
items:
$ref: '#/components/schemas/TableCalculation'
type: array
additionalMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
metricOverrides:
$ref: '#/components/schemas/MetricOverrides'
dimensionOverrides:
$ref: '#/components/schemas/DimensionOverrides'
pivotDimensions:
items:
type: string
type: array
metadata:
properties:
hasADateDimension:
$ref: '#/components/schemas/Pick_CompiledDimension.name-or-label-or-table_'
required:
- hasADateDimension
type: object
required:
- limit
- filters
- exploreName
- dimensions
- metrics
- sorts
- tableCalculations
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_MetricQueryRequest.csvLimit_:
$ref: '#/components/schemas/Pick_MetricQueryRequest.Exclude_keyofMetricQueryRequest.csvLimit__'
description: Construct a type with the properties of T except for those in type
K.
ExecuteAsyncMetricQueryRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
pivotConfiguration:
$ref: '#/components/schemas/PivotConfiguration'
dateZoom:
$ref: '#/components/schemas/DateZoom'
query:
$ref: '#/components/schemas/Omit_MetricQueryRequest.csvLimit_'
required:
- query
type: object
ApiExecuteAsyncFieldValueSearchResults:
properties:
cacheMetadata:
$ref: '#/components/schemas/CacheMetadata'
queryUuid:
type: string
required:
- cacheMetadata
- queryUuid
type: object
ApiSuccess_ApiExecuteAsyncFieldValueSearchResults_:
properties:
results:
$ref: '#/components/schemas/ApiExecuteAsyncFieldValueSearchResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ExecuteAsyncFieldValueSearchRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
forceRefresh:
type: boolean
filters:
$ref: '#/components/schemas/AndFilterGroup'
limit:
type: number
format: double
search:
type: string
fieldId:
type: string
table:
type: string
required:
- search
- fieldId
- table
type: object
ExecuteAsyncSavedChartRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
pivotResults:
type: boolean
limit:
type: number
format: double
nullable: true
versionUuid:
type: string
chartUuid:
type: string
required:
- chartUuid
type: object
ApiSuccess_ApiExecuteAsyncDashboardChartQueryResults_:
properties:
results:
$ref: '#/components/schemas/ApiExecuteAsyncDashboardChartQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ExecuteAsyncDashboardChartRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
pivotResults:
type: boolean
limit:
type: number
format: double
nullable: true
dateZoom:
$ref: '#/components/schemas/DateZoom'
dashboardSorts:
items:
$ref: '#/components/schemas/SortField'
type: array
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
dashboardUuid:
type: string
tileUuid:
type: string
chartUuid:
type: string
required:
- dashboardSorts
- dashboardFilters
- dashboardUuid
- tileUuid
- chartUuid
type: object
ExecuteAsyncUnderlyingDataRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
sorts:
items:
$ref: '#/components/schemas/SortField'
type: array
limit:
type: number
format: double
nullable: true
dateZoom:
$ref: '#/components/schemas/DateZoom'
filters:
$ref: '#/components/schemas/Filters'
underlyingDataItemId:
type: string
underlyingDataSourceQueryUuid:
type: string
required:
- filters
- underlyingDataSourceQueryUuid
type: object
ApiExecuteAsyncSqlQueryResults:
allOf:
- $ref: '#/components/schemas/ApiExecuteAsyncQueryResultsCommon'
- properties: {}
type: object
ApiSuccess_ApiExecuteAsyncSqlQueryResults_:
properties:
results:
$ref: '#/components/schemas/ApiExecuteAsyncSqlQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ExecuteAsyncSqlQueryRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
pivotConfiguration:
$ref: '#/components/schemas/PivotConfiguration'
limit:
type: number
format: double
sql:
type: string
required:
- sql
type: object
ExecuteAsyncSqlChartByUuidRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
limit:
type: number
format: double
savedSqlUuid:
type: string
required:
- savedSqlUuid
type: object
ExecuteAsyncSqlChartBySlugRequestParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
limit:
type: number
format: double
slug:
type: string
required:
- slug
type: object
ExecuteAsyncSqlChartRequestParams:
anyOf:
- $ref: '#/components/schemas/ExecuteAsyncSqlChartByUuidRequestParams'
- $ref: '#/components/schemas/ExecuteAsyncSqlChartBySlugRequestParams'
ApiSuccess_ApiExecuteAsyncDashboardSqlChartQueryResults_:
properties:
results:
$ref: '#/components/schemas/ApiExecuteAsyncDashboardSqlChartQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ExecuteAsyncDashboardSqlChartCommonParams:
allOf:
- $ref: '#/components/schemas/CommonExecuteQueryRequestParams'
- properties:
limit:
type: number
format: double
dashboardSorts:
items:
$ref: '#/components/schemas/SortField'
type: array
dashboardFilters:
$ref: '#/components/schemas/DashboardFilters'
tileUuid:
type: string
dashboardUuid:
type: string
required:
- dashboardSorts
- dashboardFilters
- tileUuid
- dashboardUuid
type: object
ExecuteAsyncDashboardSqlChartByUuidRequestParams:
allOf:
- $ref: '#/components/schemas/ExecuteAsyncDashboardSqlChartCommonParams'
- properties:
savedSqlUuid:
type: string
required:
- savedSqlUuid
type: object
ExecuteAsyncDashboardSqlChartBySlugRequestParams:
allOf:
- $ref: '#/components/schemas/ExecuteAsyncDashboardSqlChartCommonParams'
- properties:
slug:
type: string
required:
- slug
type: object
ExecuteAsyncDashboardSqlChartRequestParams:
anyOf:
- $ref: '#/components/schemas/ExecuteAsyncDashboardSqlChartByUuidRequestParams'
- $ref: '#/components/schemas/ExecuteAsyncDashboardSqlChartBySlugRequestParams'
ApiDownloadAsyncQueryResults:
properties:
fileUrl:
type: string
required:
- fileUrl
type: object
ApiDownloadAsyncQueryResultsAsCsv:
properties:
truncated:
type: boolean
fileUrl:
type: string
required:
- truncated
- fileUrl
type: object
ApiDownloadAsyncQueryResultsAsXlsx:
properties:
truncated:
type: boolean
fileUrl:
type: string
required:
- truncated
- fileUrl
type: object
ApiSuccess_ApiDownloadAsyncQueryResults-or-ApiDownloadAsyncQueryResultsAsCsv-or-ApiDownloadAsyncQueryResultsAsXlsx_:
properties:
results:
anyOf:
- $ref: '#/components/schemas/ApiDownloadAsyncQueryResults'
- $ref: '#/components/schemas/ApiDownloadAsyncQueryResultsAsCsv'
- $ref: '#/components/schemas/ApiDownloadAsyncQueryResultsAsXlsx'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DownloadFileType:
enum:
- csv
- image
- jsonl
- s3_jsonl
- xlsx
type: string
Pick_DownloadAsyncQueryResultsRequestParams.Exclude_keyofDownloadAsyncQueryResultsRequestParams.queryUuid__:
properties:
type:
$ref: '#/components/schemas/DownloadFileType'
pivotConfig:
$ref: '#/components/schemas/PivotConfig'
onlyRaw:
type: boolean
showTableNames:
type: boolean
customLabels:
$ref: '#/components/schemas/Record_string.string_'
columnOrder:
items:
type: string
type: array
hiddenFields:
items:
type: string
type: array
exportPivotedData:
type: boolean
attachmentDownloadName:
type: string
type: object
description: From T, pick a set of properties whose keys are in the union K
Omit_DownloadAsyncQueryResultsRequestParams.queryUuid_:
$ref: '#/components/schemas/Pick_DownloadAsyncQueryResultsRequestParams.Exclude_keyofDownloadAsyncQueryResultsRequestParams.queryUuid__'
description: Construct a type with the properties of T except for those in type
K.
ApiSavedChartResponse:
properties:
results:
$ref: '#/components/schemas/SavedChart'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiSuccess_ProjectDefaults-or-undefined_:
properties:
results:
$ref: '#/components/schemas/ProjectDefaults'
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
ApiDashboardResponse:
properties:
results:
$ref: '#/components/schemas/Dashboard'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
Pick_CreateDashboard.name-or-description-or-spaceUuid-or-colorPaletteUuid_:
properties:
description:
type: string
name:
type: string
spaceUuid:
type: string
colorPaletteUuid:
type: string
nullable: true
required:
- name
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardUnversionedFields:
$ref: '#/components/schemas/Pick_CreateDashboard.name-or-description-or-spaceUuid-or-colorPaletteUuid_'
Pick_CreateDashboard.tiles-or-filters-or-parameters-or-updatedByUser-or-tabs-or-config_:
properties:
parameters:
$ref: '#/components/schemas/DashboardParameters'
tiles:
items:
anyOf:
- $ref: '#/components/schemas/CreateDashboardChartTile'
- $ref: '#/components/schemas/CreateDashboardMarkdownTile'
- $ref: '#/components/schemas/CreateDashboardLoomTile'
- $ref: '#/components/schemas/CreateDashboardSqlChartTile'
- $ref: '#/components/schemas/CreateDashboardHeadingTile'
- $ref: '#/components/schemas/CreateDashboardDataAppTile'
type: array
filters:
$ref: '#/components/schemas/DashboardFilters'
updatedByUser:
$ref: '#/components/schemas/Pick_UpdatedByUser.userUuid_'
tabs:
items:
$ref: '#/components/schemas/DashboardTab'
type: array
config:
$ref: '#/components/schemas/DashboardConfig'
required:
- tiles
- tabs
type: object
description: From T, pick a set of properties whose keys are in the union K
DashboardVersionedFields:
$ref: '#/components/schemas/Pick_CreateDashboard.tiles-or-filters-or-parameters-or-updatedByUser-or-tabs-or-config_'
UpdateDashboard:
anyOf:
- $ref: '#/components/schemas/DashboardUnversionedFields'
- $ref: '#/components/schemas/DashboardVersionedFields'
- allOf:
- $ref: '#/components/schemas/DashboardUnversionedFields'
- $ref: '#/components/schemas/DashboardVersionedFields'
ProjectParameterSummary:
properties:
modelName:
type: string
source:
type: string
enum:
- config
- model
config:
$ref: '#/components/schemas/LightdashProjectParameter'
name:
type: string
required:
- source
- config
- name
type: object
KnexPaginatedData_ProjectParameterSummary-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/ProjectParameterSummary'
type: array
required:
- data
type: object
ApiGetProjectParametersListResults:
$ref: '#/components/schemas/KnexPaginatedData_ProjectParameterSummary-Array_'
ApiSuccess_ApiGetProjectParametersListResults_:
properties:
results:
$ref: '#/components/schemas/ApiGetProjectParametersListResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ParameterDefinitions:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
ApiGetProjectParametersResults:
$ref: '#/components/schemas/ParameterDefinitions'
ApiSuccess_ApiGetProjectParametersResults_:
properties:
results:
$ref: '#/components/schemas/ApiGetProjectParametersResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
FeatureFlag:
properties:
enabled:
type: boolean
id:
type: string
required:
- enabled
- id
type: object
ApiStartDeploySessionResponse:
properties:
results:
properties:
deploySessionUuid:
type: string
required:
- deploySessionUuid
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiAddDeployBatchResponse:
properties:
results:
properties:
exploreCount:
type: number
format: double
batchNumber:
type: number
format: double
required:
- exploreCount
- batchNumber
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DeploySessionStatus:
enum:
- uploading
- finalizing
- completed
- failed
type: string
ApiFinalizeDeployResponse:
properties:
results:
allOf:
- $ref: '#/components/schemas/ApiDeployExploresResults'
- properties:
status:
$ref: '#/components/schemas/DeploySessionStatus'
required:
- status
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ApiDashboardPaginatedSchedulersResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SchedulerAndTargets-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ContentType.CHART:
enum:
- chart
type: string
ChartContent:
properties:
contentType:
$ref: '#/components/schemas/ContentType.CHART'
uuid:
type: string
slug:
type: string
name:
type: string
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
createdBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
lastUpdatedAt:
type: string
format: date-time
nullable: true
lastUpdatedBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
project:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
organization:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
space:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
pinnedList:
properties:
uuid:
type: string
required:
- uuid
type: object
nullable: true
views:
type: number
format: double
firstViewedAt:
type: string
format: date-time
nullable: true
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
source:
$ref: '#/components/schemas/ChartSourceType'
chartKind:
$ref: '#/components/schemas/ChartKind'
dashboard:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
nullable: true
required:
- contentType
- uuid
- slug
- name
- description
- createdAt
- createdBy
- lastUpdatedAt
- lastUpdatedBy
- project
- organization
- space
- pinnedList
- views
- firstViewedAt
- verification
- source
- chartKind
- dashboard
type: object
additionalProperties: true
ContentType.DASHBOARD:
enum:
- dashboard
type: string
DashboardContent:
properties:
contentType:
$ref: '#/components/schemas/ContentType.DASHBOARD'
uuid:
type: string
slug:
type: string
name:
type: string
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
createdBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
lastUpdatedAt:
type: string
format: date-time
nullable: true
lastUpdatedBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
project:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
organization:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
space:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
pinnedList:
properties:
uuid:
type: string
required:
- uuid
type: object
nullable: true
views:
type: number
format: double
firstViewedAt:
type: string
format: date-time
nullable: true
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
required:
- contentType
- uuid
- slug
- name
- description
- createdAt
- createdBy
- lastUpdatedAt
- lastUpdatedBy
- project
- organization
- space
- pinnedList
- views
- firstViewedAt
- verification
type: object
additionalProperties: true
ContentType.SPACE:
enum:
- space
type: string
SpaceContent:
properties:
contentType:
$ref: '#/components/schemas/ContentType.SPACE'
uuid:
type: string
slug:
type: string
name:
type: string
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
createdBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
lastUpdatedAt:
type: string
format: date-time
nullable: true
lastUpdatedBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
project:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
organization:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
space:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
pinnedList:
properties:
order:
type: number
format: double
uuid:
type: string
required:
- order
- uuid
type: object
nullable: true
views:
type: number
format: double
firstViewedAt:
type: string
format: date-time
nullable: true
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
inheritParentPermissions:
type: boolean
dashboardCount:
type: number
format: double
chartCount:
type: number
format: double
childSpaceCount:
type: number
format: double
appCount:
type: number
format: double
parentSpaceUuid:
type: string
nullable: true
path:
type: string
access:
items:
type: string
type: array
required:
- contentType
- uuid
- slug
- name
- description
- createdAt
- createdBy
- lastUpdatedAt
- lastUpdatedBy
- project
- organization
- space
- pinnedList
- views
- firstViewedAt
- verification
- inheritParentPermissions
- dashboardCount
- chartCount
- childSpaceCount
- appCount
- parentSpaceUuid
- path
- access
type: object
additionalProperties: true
ContentType.DATA_APP:
enum:
- data_app
type: string
DataAppContent:
properties:
contentType:
$ref: '#/components/schemas/ContentType.DATA_APP'
uuid:
type: string
slug:
type: string
name:
type: string
description:
type: string
nullable: true
createdAt:
type: string
format: date-time
createdBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
lastUpdatedAt:
type: string
format: date-time
nullable: true
lastUpdatedBy:
properties:
lastName:
type: string
firstName:
type: string
uuid:
type: string
required:
- lastName
- firstName
- uuid
type: object
nullable: true
project:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
organization:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
space:
properties:
name:
type: string
uuid:
type: string
required:
- name
- uuid
type: object
pinnedList:
properties:
order:
type: number
format: double
uuid:
type: string
required:
- order
- uuid
type: object
nullable: true
views:
type: number
format: double
firstViewedAt:
type: string
format: date-time
nullable: true
verification:
allOf:
- $ref: '#/components/schemas/ContentVerificationInfo'
nullable: true
latestVersionNumber:
type: number
format: double
nullable: true
latestVersionStatus:
allOf:
- $ref: '#/components/schemas/AppVersionStatus'
nullable: true
required:
- contentType
- uuid
- slug
- name
- description
- createdAt
- createdBy
- lastUpdatedAt
- lastUpdatedBy
- project
- organization
- space
- pinnedList
- views
- firstViewedAt
- verification
- latestVersionNumber
- latestVersionStatus
type: object
additionalProperties: true
SummaryContent:
anyOf:
- $ref: '#/components/schemas/ChartContent'
- $ref: '#/components/schemas/DashboardContent'
- $ref: '#/components/schemas/SpaceContent'
- $ref: '#/components/schemas/DataAppContent'
KnexPaginatedData_SummaryContent-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/SummaryContent'
type: array
required:
- data
type: object
ApiContentResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_SummaryContent-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
ContentSortByColumns:
enum:
- name
- space_name
- last_updated_at
type: string
ItemPayload:
anyOf:
- properties:
source:
$ref: '#/components/schemas/ChartSourceType'
contentType:
$ref: '#/components/schemas/ContentType.CHART'
uuid:
type: string
required:
- source
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.DASHBOARD'
uuid:
type: string
required:
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.SPACE'
uuid:
type: string
required:
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.DATA_APP'
uuid:
type: string
required:
- contentType
- uuid
type: object
ContentActionMove:
properties:
targetSpaceUuid:
type: string
nullable: true
type:
type: string
enum:
- move
nullable: false
required:
- targetSpaceUuid
- type
type: object
ApiContentActionBody_ContentActionMove_:
properties:
action:
$ref: '#/components/schemas/ContentActionMove'
item:
$ref: '#/components/schemas/ItemPayload'
required:
- action
- item
type: object
ApiContentBulkActionBody_ContentActionMove_:
properties:
action:
$ref: '#/components/schemas/ContentActionMove'
content:
items:
$ref: '#/components/schemas/ItemPayload'
type: array
required:
- action
- content
type: object
DeletedChartBase:
properties:
organizationUuid:
type: string
projectUuid:
type: string
spaceName:
type: string
spaceUuid:
type: string
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
chartKind:
allOf:
- $ref: '#/components/schemas/ChartKind'
nullable: true
contentType:
$ref: '#/components/schemas/ContentType.CHART'
description:
type: string
nullable: true
name:
type: string
uuid:
type: string
required:
- organizationUuid
- projectUuid
- spaceName
- spaceUuid
- deletedBy
- deletedAt
- chartKind
- contentType
- description
- name
- uuid
type: object
ChartSourceType.DBT_EXPLORE:
enum:
- dbt_explore
type: string
WithDescendantCounts_DeletedDbtChartContentSummary.scheduler_:
allOf:
- $ref: '#/components/schemas/DeletedChartBase'
- properties:
source:
$ref: '#/components/schemas/ChartSourceType.DBT_EXPLORE'
required:
- source
type: object
- properties:
schedulerCount:
type: number
format: double
required:
- schedulerCount
type: object
ChartSourceType.SQL:
enum:
- sql
type: string
DeletedSqlChartContentSummary:
allOf:
- $ref: '#/components/schemas/DeletedChartBase'
- properties:
source:
$ref: '#/components/schemas/ChartSourceType.SQL'
required:
- source
type: object
WithDescendantCounts_DeletedSqlChartContentSummary.never_:
$ref: '#/components/schemas/DeletedSqlChartContentSummary'
DeletedDashboardContentSummary:
properties:
organizationUuid:
type: string
projectUuid:
type: string
spaceName:
type: string
spaceUuid:
type: string
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
contentType:
$ref: '#/components/schemas/ContentType.DASHBOARD'
description:
type: string
nullable: true
name:
type: string
uuid:
type: string
required:
- organizationUuid
- projectUuid
- spaceName
- spaceUuid
- deletedBy
- deletedAt
- contentType
- description
- name
- uuid
type: object
WithDescendantCounts_DeletedDashboardContentSummary.chart-or-scheduler_:
allOf:
- $ref: '#/components/schemas/DeletedDashboardContentSummary'
- properties:
schedulerCount:
type: number
format: double
chartCount:
type: number
format: double
required:
- schedulerCount
- chartCount
type: object
DeletedSpaceContentSummary:
properties:
organizationUuid:
type: string
projectUuid:
type: string
spaceName:
type: string
spaceUuid:
type: string
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
contentType:
$ref: '#/components/schemas/ContentType.SPACE'
description:
type: string
nullable: true
name:
type: string
uuid:
type: string
required:
- organizationUuid
- projectUuid
- spaceName
- spaceUuid
- deletedBy
- deletedAt
- contentType
- description
- name
- uuid
type: object
WithDescendantCounts_DeletedSpaceContentSummary.nestedSpace-or-dashboard-or-chart-or-scheduler-or-app_:
allOf:
- $ref: '#/components/schemas/DeletedSpaceContentSummary'
- properties:
appCount:
type: number
format: double
nestedSpaceCount:
type: number
format: double
schedulerCount:
type: number
format: double
chartCount:
type: number
format: double
dashboardCount:
type: number
format: double
required:
- appCount
- nestedSpaceCount
- schedulerCount
- chartCount
- dashboardCount
type: object
DeletedDataAppContentSummary:
properties:
organizationUuid:
type: string
projectUuid:
type: string
spaceName:
type: string
nullable: true
spaceUuid:
type: string
nullable: true
deletedBy:
properties:
lastName:
type: string
firstName:
type: string
userUuid:
type: string
required:
- lastName
- firstName
- userUuid
type: object
nullable: true
deletedAt:
type: string
format: date-time
contentType:
$ref: '#/components/schemas/ContentType.DATA_APP'
description:
type: string
nullable: true
name:
type: string
uuid:
type: string
required:
- organizationUuid
- projectUuid
- spaceName
- spaceUuid
- deletedBy
- deletedAt
- contentType
- description
- name
- uuid
type: object
WithDescendantCounts_DeletedDataAppContentSummary.never_:
$ref: '#/components/schemas/DeletedDataAppContentSummary'
DeletedContentWithDescendants:
anyOf:
- $ref: '#/components/schemas/WithDescendantCounts_DeletedDbtChartContentSummary.scheduler_'
- $ref: '#/components/schemas/WithDescendantCounts_DeletedSqlChartContentSummary.never_'
- $ref: '#/components/schemas/WithDescendantCounts_DeletedDashboardContentSummary.chart-or-scheduler_'
- $ref: '#/components/schemas/WithDescendantCounts_DeletedSpaceContentSummary.nestedSpace-or-dashboard-or-chart-or-scheduler-or-app_'
- $ref: '#/components/schemas/WithDescendantCounts_DeletedDataAppContentSummary.never_'
KnexPaginatedData_DeletedContentWithDescendants-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/DeletedContentWithDescendants'
type: array
required:
- data
type: object
ApiDeletedContentResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_DeletedContentWithDescendants-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
DeletedContentItem:
anyOf:
- properties:
source:
$ref: '#/components/schemas/ChartSourceType'
contentType:
$ref: '#/components/schemas/ContentType.CHART'
uuid:
type: string
required:
- source
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.DASHBOARD'
uuid:
type: string
required:
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.SPACE'
uuid:
type: string
required:
- contentType
- uuid
type: object
- properties:
contentType:
$ref: '#/components/schemas/ContentType.DATA_APP'
uuid:
type: string
required:
- contentType
- uuid
type: object
ApiRestoreContentBody:
properties:
item:
$ref: '#/components/schemas/DeletedContentItem'
required:
- item
type: object
ApiPermanentlyDeleteContentBody:
properties:
item:
$ref: '#/components/schemas/DeletedContentItem'
required:
- item
type: object
KnexPaginatedData_CatalogField-Array_:
properties:
pagination:
allOf:
- $ref: '#/components/schemas/KnexPaginateArgs'
- properties:
totalResults:
type: number
format: double
totalPageCount:
type: number
format: double
required:
- totalResults
- totalPageCount
type: object
data:
items:
$ref: '#/components/schemas/CatalogField'
type: array
required:
- data
type: object
ApiPaginatedMetricsWithTimeDimensionResponse:
properties:
results:
$ref: '#/components/schemas/KnexPaginatedData_CatalogField-Array_'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
CatalogSortField:
type: string
enum:
- name
- label
- chartUsage
- tableLabel
- owner
securitySchemes:
session_cookie:
type: apiKey
in: cookie
name: connect.sid
api_key:
type: apiKey
in: header
name: Authorization
description: Value should be 'ApiKey '
info:
title: Lightdash 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/
paths:
/api/v1/snowflake/sso/is-authenticated:
get:
operationId: ssoIsAuthenticated
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Check if the user is authenticated with Snowflake SSO
summary: Check Snowflake SSO authentication
tags:
- Projects
security: []
parameters: []
/api/v1/scim/v2/Users:
get:
operationId: GetScimUsers
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimListResponse_ScimUser_'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults: 1
itemsPerPage: 1
startIndex: 1
Resources:
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:User
id: e0dd2003-c291-4e14-b977-7a03b7edc842
userName: demo3@lightdash.com
name:
givenName: Viewer
familyName: User
active: true
emails:
- value: demo3@lightdash.com
primary: true
roles:
- value: viewer
display: Viewer
type: Organization
- value: 3675b69e-8324-4110-bdca-059031aa8da3:editor
display: Jaffle shop - Editor
type: Project - Jaffle shop
primary: false
meta:
resourceType: User
created: '2025-11-03T14:22:18.464Z'
lastModified: '2025-11-05T15:04:02.687Z'
location: https://.lightdash.cloud/api/v1/scim/v2/Users/e0dd2003-c291-4e14-b977-7a03b7edc842
description: List SCIM users in the organization
summary: List users
tags:
- SCIM
security: []
parameters:
- description: 'SCIM filter string (optional). See: https://bookstack.soffid.com/books/scim/page/scim-query-syntax'
in: query
name: filter
required: false
schema:
type: string
- description: 1-based index of the first result to return (optional)
in: query
name: startIndex
required: false
schema:
format: double
type: number
- description: Maximum number of results to return (optional)
in: query
name: count
required: false
schema:
format: double
type: number
post:
operationId: CreateScimUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUser'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUser'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Create a new user
summary: Create user
tags:
- SCIM
security: []
parameters: []
requestBody:
description: User to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUpsertUser'
description: User to create
/api/v1/scim/v2/Users/{userUuid}:
get:
operationId: GetScimUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUser'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:schemas:core:2.0:User
id: e0dd2003-c291-4e14-b977-7a03b7edc842
userName: demo3@lightdash.com
name:
givenName: Viewer
familyName: User
active: true
emails:
- value: demo3@lightdash.com
primary: true
roles:
- value: viewer
display: Viewer
type: Organization
- value: 3675b69e-8324-4110-bdca-059031aa8da3:editor
display: Jaffle shop - Editor
type: Project - Jaffle shop
primary: false
meta:
resourceType: User
created: '2025-11-03T14:22:18.464Z'
lastModified: '2025-11-05T15:04:02.687Z'
location: https://.lightdash.cloud/api/v1/scim/v2/Users/e0dd2003-c291-4e14-b977-7a03b7edc842
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Get a SCIM user by ID
summary: Get user
tags:
- SCIM
security: []
parameters:
- description: Lightdash user UUID - this is used as a unique identifier for
SCIM
in: path
name: userUuid
required: true
schema:
type: string
put:
operationId: UpdateScimUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUser'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Update a user by ID (SCIM PUT)
summary: Replace user
tags:
- SCIM
security: []
parameters:
- description: UUID of the user to update
in: path
name: userUuid
required: true
schema:
type: string
requestBody:
description: Updated user data
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUpsertUser'
description: Updated user data
patch:
operationId: PatchScimUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUser'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Patch a user by ID (SCIM PATCH)
summary: Patch user
tags:
- SCIM
security: []
parameters:
- description: UUID of the user to patch
in: path
name: userUuid
required: true
schema:
type: string
requestBody:
description: Patch operations to apply
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimPatch'
description: Patch operations to apply
delete:
operationId: DeleteScimUser
responses:
'204':
description: No content
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Delete a user by ID
summary: Delete user
tags:
- SCIM
security: []
parameters:
- description: UUID of the user to delete
in: path
name: userUuid
required: true
schema:
type: string
/api/v1/scim/v2:
get:
operationId: GetScimRoot
responses:
'200':
description: Success
'204':
description: No content
description: Root SCIM endpoint for validating SCIM configuration
summary: Root check
tags:
- SCIM
security: []
parameters: []
/api/v1/scim/v2/ServiceProviderConfig:
get:
operationId: GetScimServiceProviderConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimServiceProviderConfig'
description: Get SCIM service provider configuration
summary: Provider config
tags:
- SCIM
security: []
parameters: []
/api/v1/scim/v2/Schemas:
get:
operationId: GetScimSchemas
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimListResponse_ScimSchema_'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults: 1
itemsPerPage: 1
startIndex: 1
Resources:
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:Schema
id: urn:ietf:params:scim:schemas:extension:2.0:Role
name: Role
description: Role Schema
attributes:
- name: value
type: string
multiValued: false
description: The value of the role
required: true
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: display
type: string
multiValued: false
description: Human-readable name for the role
required: false
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: type
type: string
multiValued: false
description: Label indicating the role function
required: false
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: supported
type: boolean
multiValued: false
description: Boolean indicating if the role is usable
required: true
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
description: Get SCIM schemas
summary: List schemas
tags:
- SCIM
security: []
parameters: []
/api/v1/scim/v2/Schemas/{schemaId}:
get:
operationId: GetScimSchema
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimSchema'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:schemas:core:2.0:Schema
id: urn:ietf:params:scim:schemas:extension:2.0:Role
name: Role
description: Role Schema
attributes:
- name: value
type: string
multiValued: false
description: The value of the role
required: true
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: display
type: string
multiValued: false
description: Human-readable name for the role
required: false
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: type
type: string
multiValued: false
description: Label indicating the role function
required: false
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
- name: supported
type: boolean
multiValued: false
description: Boolean indicating if the role is usable
required: true
caseExact: false
mutability: readOnly
returned: default
uniqueness: none
description: Get individual SCIM schema
summary: Get schema
tags:
- SCIM
security: []
parameters:
- description: schema identifier
in: path
name: schemaId
required: true
schema:
type: string
/api/v1/scim/v2/ResourceTypes:
get:
operationId: GetScimResourceTypes
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimListResponse_ScimResourceType_'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults: 3
itemsPerPage: 3
startIndex: 1
Resources:
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
id: User
name: User
description: User Account
endpoint: /Users
schema: urn:ietf:params:scim:schemas:core:2.0:User
schemaExtensions:
- schema: urn:lightdash:params:scim:schemas:extension:2.0:User
required: false
meta:
resourceType: ResourceType
location: https://.lightdash.cloud/api/v1/scim/v2/ResourceTypes/User
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
id: Group
name: Group
description: Group
endpoint: /Groups
schema: urn:ietf:params:scim:schemas:core:2.0:Group
meta:
resourceType: ResourceType
location: https://.lightdash.cloud/api/v1/scim/v2/ResourceTypes/Group
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
id: Role
name: Role
description: Role
endpoint: /Roles
schema: urn:ietf:params:scim:schemas:extension:2.0:Role
meta:
resourceType: ResourceType
location: https://.lightdash.cloud/api/v1/scim/v2/ResourceTypes/Role
description: Get SCIM resource types
summary: List resource types
tags:
- SCIM
security: []
parameters: []
/api/v1/scim/v2/ResourceTypes/{resourceTypeId}:
get:
operationId: GetScimResourceType
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimResourceType'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
id: User
name: User
description: User Account
endpoint: /Users
schema: urn:ietf:params:scim:schemas:core:2.0:User
schemaExtensions:
- schema: urn:lightdash:params:scim:schemas:extension:2.0:User
required: false
meta:
resourceType: ResourceType
location: https://.lightdash.cloud/api/v1/scim/v2/ResourceTypes/User
description: Get individual SCIM resource type
summary: Get resource type
tags:
- SCIM
security: []
parameters:
- description: resource type identifier
in: path
name: resourceTypeId
required: true
schema:
type: string
/api/v1/scim/v2/Roles:
get:
operationId: GetScimRoles
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimListResponse_ScimRole_'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults: 3
itemsPerPage: 3
startIndex: 1
Resources:
- schemas:
- urn:ietf:params:scim:schemas:extension:2.0:Role
id: member
value: member
display: Member
type: Organization
supported: true
meta:
resourceType: Role
location: https://.lightdash.cloud/api/v1/scim/v2/Roles/member
- schemas:
- urn:ietf:params:scim:schemas:extension:2.0:Role
id: 3675b69e-8324-4110-bdca-059031aa8da3:viewer
value: 3675b69e-8324-4110-bdca-059031aa8da3:viewer
display: Jaffle shop - Viewer
type: Project - Jaffle shop
supported: true
meta:
resourceType: Role
location: https://.lightdash.cloud/api/v1/scim/v2/Roles/3675b69e-8324-4110-bdca-059031aa8da3:viewer
- schemas:
- urn:ietf:params:scim:schemas:extension:2.0:Role
id: 3675b69e-8324-4110-bdca-059031aa8da3:da116e0f-2b96-4af4-93b7-b2636a26853d
value: 3675b69e-8324-4110-bdca-059031aa8da3:da116e0f-2b96-4af4-93b7-b2636a26853d
display: Jaffle shop - test
type: Project - Jaffle shop
supported: true
meta:
resourceType: Role
created: '2025-11-03T17:01:45.447Z'
lastModified: '2025-11-03T17:01:45.447Z'
location: https://.lightdash.cloud/api/v1/scim/v2/Roles/3675b69e-8324-4110-bdca-059031aa8da3:da116e0f-2b96-4af4-93b7-b2636a26853d
description: Get a list of roles within an organization
summary: List roles
tags:
- SCIM
security: []
parameters:
- description: Filter to apply to the role list (optional)
in: query
name: filter
required: false
schema:
type: string
- description: SCIM 2.0 startIndex (1-based). Defaults to 1.
in: query
name: startIndex
required: false
schema:
format: double
type: number
- description: SCIM 2.0 count (page size). Defaults to 100.
in: query
name: count
required: false
schema:
format: double
type: number
/api/v1/scim/v2/Roles/{roleId}:
get:
operationId: GetScimRole
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimRole'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:schemas:extension:2.0:Role
id: member
value: member
display: Member
type: Organization
supported: true
meta:
resourceType: Role
location: https://.lightdash.cloud/api/v1/scim/v2/Roles/member
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Get a SCIM role by ID
summary: Get role
tags:
- SCIM
security: []
parameters:
- description: Role ID - this is used as a unique identifier for SCIM
in: path
name: roleId
required: true
schema:
type: string
/api/v1/scim/v2/Groups:
get:
operationId: GetScimGroups
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimListResponse_ScimGroup_'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults: 1
itemsPerPage: 1
startIndex: 1
Resources:
- schemas:
- urn:ietf:params:scim:schemas:core:2.0:Group
id: 1456c265-f375-4d64-bd33-105c84ad9b5d
displayName: Org 1 Editor Group
members:
- value: 80fb8b59-d6b7-4ed6-b969-9849310f3e53
display: demo2@lightdash.com
meta:
resourceType: Group
created: '2025-11-03T14:22:24.067Z'
lastModified: '2025-11-03T14:22:24.067Z'
location: https://.lightdash.cloud/api/v1/scim/v2/Groups/1456c265-f375-4d64-bd33-105c84ad9b5d
description: Get a list of groups within an organization
summary: List groups
tags:
- SCIM
security: []
parameters:
- description: Filter to apply to the group list (optional)
in: query
name: filter
required: false
schema:
type: string
- description: Index of the first group to return (optional)
in: query
name: startIndex
required: false
schema:
format: double
type: number
- description: Number of groups to return (optional)
in: query
name: count
required: false
schema:
format: double
type: number
post:
operationId: CreateScimGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Create a new group in the SCIM application
summary: Create group
tags:
- SCIM
security: []
parameters: []
requestBody:
description: Group to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUpsertGroup'
description: Group to create
/api/v1/scim/v2/Groups/{id}:
get:
operationId: GetScimGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
examples:
Example 1:
value:
schemas:
- urn:ietf:params:scim:schemas:core:2.0:Group
id: 1456c265-f375-4d64-bd33-105c84ad9b5d
displayName: Org 1 Editor Group
members:
- value: 80fb8b59-d6b7-4ed6-b969-9849310f3e53
display: demo2@lightdash.com
meta:
resourceType: Group
created: '2025-11-03T14:22:24.067Z'
lastModified: '2025-11-03T14:22:24.067Z'
location: https://.lightdash.cloud/api/v1/scim/v2/Groups/1456c265-f375-4d64-bd33-105c84ad9b5d
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Get a specific group by its SCIM ID
summary: Get group
tags:
- SCIM
security: []
parameters:
- description: SCIM ID of the group to retrieve
in: path
name: id
required: true
schema:
type: string
patch:
operationId: UpdateScimGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'204':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Partially updates a group’s attributes (e.g., add or remove members).
summary: Patch group
tags:
- SCIM
security: []
parameters:
- description: SCIM ID of the group to update
in: path
name: id
required: true
schema:
type: string
requestBody:
description: Update operations to apply to the group
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimPatch'
description: Update operations to apply to the group
put:
operationId: ReplaceScimGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'204':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ScimGroup'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Update a group's attributes completely
summary: Replace group
tags:
- SCIM
security: []
parameters:
- description: SCIM ID of the group to update
in: path
name: id
required: true
schema:
type: string
requestBody:
description: Group to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScimUpsertGroup'
description: Group to update
delete:
operationId: DeleteScimGroup
responses:
'204':
description: No content
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ScimErrorPayload'
description: Delete a specific group by its SCIM ID
summary: Delete group
tags:
- SCIM
security: []
parameters:
- description: SCIM ID of the group to delete
in: path
name: id
required: true
schema:
type: string
/api/v1/databricks/sso/is-authenticated:
get:
operationId: getDatabricksAccessToken
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Check if user is authenticated with Databricks OAuth
summary: Check Databricks OAuth authentication
tags:
- Projects
security: []
parameters: []
/api/v1/org/aiRouter:
get:
operationId: getAiRouterConfig
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get the AI router configuration for the organization. Returns
404 when the
router has not been configured yet — clients use this to detect first-use.'
summary: Get AI router config
security: []
parameters: []
put:
operationId: upsertAiRouterConfig
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Upsert the AI router configuration. Creates the row lazily on first
save.
summary: Upsert AI router config
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertAiRouterRequest'
/api/v1/org/aiRouter/instructions/{projectUuid}:
get:
operationId: getAiRouterInstruction
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterInstructionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get the active routing instruction for a project. Returns null
when no
instruction has been written for the project yet.'
summary: Get AI router instruction
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
put:
operationId: upsertAiRouterInstruction
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterInstructionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Write a new routing-instruction version for a project. Versions
are
append-only; the latest one is the active instruction.'
summary: Upsert AI router instruction
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertAiRouterInstructionRequest'
/api/v1/org/aiRouter/route:
post:
operationId: routeAiAgent
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterRouteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Route a user prompt to the best candidate agent in the current
project.
summary: Route prompt
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AiRouterRouteRequest'
/api/v1/org/aiRouter/decisions/{decisionUuid}/commit:
post:
operationId: commitAiRouterDecision
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterDecisionCommitResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Commit a router decision once the user has resolved it (router
auto-routed and the thread is created, or the user picked an agent
from the picker). Decisions left uncommitted indicate the user
abandoned the flow.'
summary: Commit router decision
security: []
parameters:
- in: path
name: decisionUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AiRouterDecisionCommitRequest'
/api/v1/org/aiRouter/decisions:
get:
operationId: listAiRouterDecisions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiRouterDecisionListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List recent routing decisions for the org's router.
summary: List router decisions
security: []
parameters:
- in: query
name: confidence
required: false
schema:
$ref: '#/components/schemas/AiRouterDecisionConfidence'
- in: query
name: selectionMode
required: false
schema:
$ref: '#/components/schemas/AiRouterSelectionMode'
- in: query
name: fromDate
required: false
schema:
type: string
- in: query
name: toDate
required: false
schema:
type: string
/api/v1/aiAgents/documents:
get:
operationId: listAiAgentDocuments
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentDocumentSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: query
name: projectUuid
required: false
schema:
type: string
post:
operationId: createAiAgentDocument
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentDocumentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateAiAgentDocument'
/api/v1/aiAgents/documents/{documentUuid}:
delete:
operationId: deleteAiAgentDocument
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: documentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents:
get:
operationId: listAgents
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentSummaryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: createAgent
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateAiAgentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateAiAgent'
/api/v1/projects/{projectUuid}/aiAgents/preferences:
get:
operationId: getUserAgentPreferences
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetUserAgentPreferencesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: updateUserAgentPreferences
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateUserAgentPreferencesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateUserAgentPreferences'
delete:
operationId: deleteUserAgentPreferences
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/mcpServers:
get:
operationId: listMcpServers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: createMcpServer
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateAiMcpServer'
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/github/availability:
get:
operationId: getGithubMcpAvailability
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpGithubAvailabilityResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/github/connect:
post:
operationId: connectGithubMcpServer
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiConnectGithubMcpServerBody'
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/{mcpServerUuid}/tools:
get:
operationId: listMcpServerTools
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerToolListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/{mcpServerUuid}/tools/refresh:
post:
operationId: refreshMcpServerTools
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerToolListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/{mcpServerUuid}/oauth/start:
post:
operationId: startMcpOAuthConnection
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiStartAiMcpOAuthResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpOAuthCredentialRequest'
/api/v1/projects/{projectUuid}/aiAgents/mcpServers/{mcpServerUuid}/oauth/disconnect:
post:
operationId: disconnectMcpOAuthConnection
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpOAuthCredentialRequest'
/api/v1/projects/{projectUuid}/aiAgents/threads:
get:
operationId: listProjectThreads
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentProjectThreadSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: agentUuid
required: false
schema:
type: string
- in: query
name: createdFrom
required: false
schema:
type: string
enum:
- web_app
- slack
- in: query
name: search
required: false
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}:
get:
operationId: getAgent
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
patch:
operationId: updateAgent
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateAiAgent'
delete:
operationId: deleteAgent
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/mcpServers:
get:
operationId: listAgentMcpServers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiMcpServerListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/mcpServers/{mcpServerUuid}/tools:
get:
operationId: listAgentMcpServerTools
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentMcpServerToolListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
patch:
operationId: updateAgentMcpServerTools
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentMcpServerToolListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: mcpServerUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateAiAgentMcpServerToolsRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/models:
get:
operationId: getModelOptions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentModelOptionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/suggestions:
get:
operationId: getAgentSuggestions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAgentSuggestionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: query
name: threadUuid
required: false
schema:
type: string
- in: query
name: afterMessageUuid
required: false
schema:
type: string
- in: query
name: enableSqlMode
required: false
schema:
type: boolean
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluateReadiness:
post:
operationId: evaluateAgentReadiness
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAgentReadinessScoreResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/verified-artifacts:
get:
operationId: getVerifiedArtifacts
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentVerifiedArtifactsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/verified-questions:
get:
operationId: getVerifiedQuestions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentVerifiedQuestionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads:
get:
operationId: listAgentThreads
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: query
name: allUsers
required: false
schema:
type: boolean
post:
operationId: createAgentThread
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadCreateResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadCreateRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}:
get:
operationId: getAgentThread
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/pull-request:
get:
operationId: getAgentThreadPullRequest
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadPullRequestResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get the writeback pull request associated with a thread — the
PR the
agent opened in this thread, or the PR a verification thread verifies.'
summary: Get AI agent thread pull request
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/messages:
post:
operationId: createAgentThreadMessage
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadMessageCreateResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadMessageCreateRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/tool-calls/{toolCallId}/sql-approval:
post:
operationId: decideAgentSqlApproval
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentSqlApprovalResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
- in: path
name: toolCallId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentSqlApprovalRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/stream:
post:
operationId: streamAgentThreadResponse
responses:
'200':
description: Success
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadStreamRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/generate:
post:
operationId: generateAgentThreadResponse
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadGenerateResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/generate-title:
post:
operationId: generateAgentThreadTitle
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadGenerateTitleResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/clone/{promptUuid}:
post:
operationId: cloneAgentThread
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCloneThreadResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
- in: path
name: promptUuid
required: true
schema:
type: string
- in: query
name: createdFrom
required: false
schema:
type: string
enum:
- web_app
- evals
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/messages/{messageUuid}/savedQuery:
patch:
operationId: updateAgentThreadMessageSavedQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
- in: path
name: messageUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
savedQueryUuid:
type: string
nullable: true
required:
- savedQueryUuid
type: object
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/messages/{messageUuid}/feedback:
patch:
operationId: updatePromptFeedback
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
- in: path
name: messageUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
humanFeedback:
type: string
nullable: true
humanScore:
type: number
format: double
required:
- humanScore
type: object
/api/v1/projects/{projectUuid}/aiAgents/explore-access-summary:
post:
operationId: getAgentExploreAccessSummary
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentExploreAccessSummaryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
tags:
items:
type: string
type: array
nullable: true
required:
- tags
type: object
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}:
get:
operationId: getArtifact
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentArtifactResponseTSOACompat'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}/versions/{versionUuid}:
get:
operationId: getArtifactVersion
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentArtifactResponseTSOACompat'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
- in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}/versions/{versionUuid}/viz-query:
get:
operationId: getArtifactVizQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadMessageVizQueryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
- in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/shares:
post:
operationId: createAiAgentThreadShare
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadShareResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/thread-shares/{aiThreadShareUuid}/clone:
post:
operationId: cloneAiAgentThreadShare
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCloneAiAgentThreadShareResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: aiThreadShareUuid
required: true
schema:
type: string
? /api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}/versions/{versionUuid}/charts/{chartIndex}/viz-query
: get:
operationId: getDashboardArtifactChartVizQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentThreadMessageVizQueryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
- in: path
name: versionUuid
required: true
schema:
type: string
- in: path
name: chartIndex
required: true
schema:
format: double
type: number
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}/versions/{versionUuid}/savedDashboard:
patch:
operationId: updateArtifactVersionSavedDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
- in: path
name: versionUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
savedDashboardUuid:
type: string
nullable: true
required:
- savedDashboardUuid
type: object
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/artifacts/{artifactUuid}/versions/{versionUuid}/verified:
patch:
operationId: setArtifactVersionVerified
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: artifactUuid
required: true
schema:
type: string
- in: path
name: versionUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
verified:
type: boolean
required:
- verified
type: object
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations:
post:
operationId: createEvaluation
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateEvaluationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateEvaluationRequest'
get:
operationId: getEvaluations
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations/{evalUuid}/run:
post:
operationId: runEvaluation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationRunResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations/{evalUuid}:
get:
operationId: getEvaluation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
patch:
operationId: updateEvaluation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateEvaluationRequest'
delete:
operationId: deleteEvaluation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations/{evalUuid}/runs:
get:
operationId: getEvaluationRuns
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationRunSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations/{evalUuid}/runs/{runUuid}:
get:
operationId: getEvaluationRunResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationRunResultsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
- in: path
name: runUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/evaluations/{evalUuid}/append:
post:
operationId: appendToEvaluation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentEvaluationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: evalUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAppendEvaluationRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/append-instruction:
post:
operationId: appendInstruction
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAppendInstructionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAppendInstructionRequest'
/api/v1/projects/{projectUuid}/aiAgents/{agentUuid}/threads/{threadUuid}/messages/{promptUuid}/revert-change:
post:
operationId: revertChange
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRevertChangeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: agentUuid
required: true
schema:
type: string
- in: path
name: threadUuid
required: true
schema:
type: string
- in: path
name: promptUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRevertChangeRequest'
/api/v2/projects/{projectUuid}/pre-aggregates/stats:
get:
operationId: getPreAggregateStats
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetPreAggregateStatsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Retrieves aggregated pre-aggregate hit/miss statistics for a project
summary: Get pre-aggregate stats
tags:
- v2
- Pre-Aggregates
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: days
required: false
schema:
format: double
type: number
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: exploreName
required: false
schema:
type: string
- in: query
name: queryType
required: false
schema:
type: string
enum:
- chart
- dashboard
- explorer
/api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit:
get:
operationId: getDashboardPreAggregateAudit
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetDashboardPreAggregateAuditResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Audits pre-aggregate hit/miss coverage for every tile on a dashboard
without executing the queries. Returns a per-tile breakdown grouped
by tab, suitable for CI coverage checks and pre-aggregate tuning.'
summary: Get dashboard pre-aggregate audit
tags:
- v2
- Pre-Aggregates
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
post:
operationId: runDashboardPreAggregateAudit
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetDashboardPreAggregateAuditResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Audit pre-aggregate hit/miss coverage with runtime filter overrides
summary: Run dashboard pre-aggregate audit
tags:
- v2
- Pre-Aggregates
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRunDashboardPreAggregateAuditBody'
/api/v2/projects/{projectUuid}/pre-aggregates/materializations:
get:
operationId: getPreAggregateMaterializations
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetPreAggregateMaterializationsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Retrieves pre-aggregate definitions with their latest materialization
status
summary: Get pre-aggregate materializations
tags:
- v2
- Pre-Aggregates
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v1/org/warehouse-credentials:
get:
operationId: ListOrganizationWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ApiOrganizationWarehouseCredentialsListResponse'
- $ref: '#/components/schemas/ApiOrganizationWarehouseCredentialsSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all warehouse credentials for the current organization
summary: List warehouse credentials
tags:
- Organization Warehouse Credentials
security: []
parameters:
- description: If true, returns only summaries (name, type) accessible to all
members. If false/undefined, returns full credentials requiring manage permission.
in: query
name: summary
required: false
schema:
type: boolean
post:
operationId: CreateOrganizationWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationWarehouseCredentialsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create new warehouse credentials for the organization
summary: Create warehouse credentials
tags:
- Organization Warehouse Credentials
security: []
parameters: []
requestBody:
description: the warehouse credentials to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrganizationWarehouseCredentials'
description: the warehouse credentials to create
/api/v1/org/warehouse-credentials/{credentialsUuid}:
get:
operationId: GetOrganizationWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationWarehouseCredentialsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a specific warehouse credential by UUID
summary: Get warehouse credential
tags:
- Organization Warehouse Credentials
security: []
parameters:
- description: the UUID of the warehouse credentials
in: path
name: credentialsUuid
required: true
schema:
type: string
patch:
operationId: UpdateOrganizationWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationWarehouseCredentialsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update existing warehouse credentials
summary: Update warehouse credentials
tags:
- Organization Warehouse Credentials
security: []
parameters:
- description: the UUID of the warehouse credentials to update
in: path
name: credentialsUuid
required: true
schema:
type: string
requestBody:
description: the updated warehouse credentials
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrganizationWarehouseCredentials'
description: the updated warehouse credentials
delete:
operationId: DeleteOrganizationWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete warehouse credentials
summary: Delete warehouse credentials
tags:
- Organization Warehouse Credentials
security: []
parameters:
- description: the UUID of the warehouse credentials to delete
in: path
name: credentialsUuid
required: true
schema:
type: string
/api/v1/org/sso/azuread:
get:
operationId: GetAzureAdSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAzureAdSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s Azure AD SSO configuration
(sensitive
fields are not included).'
summary: Get Azure AD SSO configuration
tags:
- Organizations
security: []
parameters: []
put:
operationId: UpsertAzureAdSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpsertAzureAdSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates or updates the current organization''s Azure AD SSO configuration.
Omit `oauth2ClientSecret` to preserve the previously stored secret on
updates.'
summary: Upsert Azure AD SSO configuration
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertAzureAdSsoConfig'
delete:
operationId: DeleteAzureAdSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Removes the current organization's Azure AD SSO configuration.
summary: Delete Azure AD SSO configuration
tags:
- Organizations
security: []
parameters: []
/api/v1/org/sso/okta:
get:
operationId: GetOktaSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOktaSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s Okta SSO configuration (sensitive
fields are not included).'
summary: Get Okta SSO configuration
tags:
- Organizations
security: []
parameters: []
put:
operationId: UpsertOktaSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpsertOktaSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates or updates the current organization''s Okta SSO configuration.
Omit `oauth2ClientSecret` to preserve the previously stored secret on
updates.'
summary: Upsert Okta SSO configuration
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertOktaSsoConfig'
delete:
operationId: DeleteOktaSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Removes the current organization's Okta SSO configuration.
summary: Delete Okta SSO configuration
tags:
- Organizations
security: []
parameters: []
/api/v1/org/sso/oidc:
get:
operationId: GetGenericOidcSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGenericOidcSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s generic OIDC SSO configuration
(sensitive fields are not included).'
summary: Get generic OIDC SSO configuration
tags:
- Organizations
security: []
parameters: []
put:
operationId: UpsertGenericOidcSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpsertGenericOidcSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates or updates the current organization''s generic OIDC SSO
configuration. Omit `clientSecret` to preserve the previously stored
secret on updates.'
summary: Upsert generic OIDC SSO configuration
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertGenericOidcSsoConfig'
delete:
operationId: DeleteGenericOidcSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Removes the current organization's generic OIDC SSO configuration.
summary: Delete generic OIDC SSO configuration
tags:
- Organizations
security: []
parameters: []
/api/v1/org/sso/oneLogin:
get:
operationId: GetOneLoginSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOneLoginSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s OneLogin SSO configuration
(sensitive
fields are not included).'
summary: Get OneLogin SSO configuration
tags:
- Organizations
security: []
parameters: []
put:
operationId: UpsertOneLoginSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpsertOneLoginSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates or updates the current organization''s OneLogin SSO
configuration. Omit `oauth2ClientSecret` to preserve the previously
stored secret on updates.'
summary: Upsert OneLogin SSO configuration
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertOneLoginSsoConfig'
delete:
operationId: DeleteOneLoginSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Removes the current organization's OneLogin SSO configuration.
summary: Delete OneLogin SSO configuration
tags:
- Organizations
security: []
parameters: []
/api/v1/org/sso/google:
get:
operationId: GetGoogleSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGoogleSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s Google SSO policy. Google
is enabled
by default using the shared instance OAuth app; a configuration only
exists when the org has set an explicit policy (e.g. disabled Google).
`null` means no explicit policy — Google follows the instance default.'
summary: Get Google SSO configuration
tags:
- Organizations
security: []
parameters: []
put:
operationId: UpsertGoogleSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpsertGoogleSsoConfigResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates or updates the current organization''s Google SSO policy.
Google
has no per-org credentials — only the `enabled` / domain / password
flags are stored.'
summary: Upsert Google SSO configuration
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertGoogleSsoConfig'
delete:
operationId: DeleteGoogleSsoConfig
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Removes the current organization''s Google SSO policy, reverting
to the
instance default (Google enabled).'
summary: Delete Google SSO configuration
tags:
- Organizations
security: []
parameters: []
/api/v1/org/domains:
get:
operationId: ListVerifiedDomains
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiVerifiedDomainsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Lists the domains the current organization has verified ownership
of.
summary: List verified domains
tags:
- Organizations
security: []
parameters: []
/api/v1/org/domains/verify:
post:
operationId: RequestDomainVerification
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDomainVerificationStatusResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Sends a one-time passcode to an address at the domain to begin
verifying
ownership. The domain must not be a public email provider and must not
already be verified by another organization.'
summary: Request domain verification
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequestDomainVerification'
/api/v1/org/domains/confirm:
post:
operationId: ConfirmDomainVerification
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDomainVerificationStatusResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Confirms a domain verification passcode. On success the domain
is marked
verified for the organization.'
summary: Confirm domain verification
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConfirmDomainVerification'
/api/v1/org/domains/{domain}:
delete:
operationId: DeleteVerifiedDomain
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Removes a verified domain and strips it from any SSO provider
that routed
to it.'
summary: Delete verified domain
tags:
- Organizations
security: []
parameters:
- in: path
name: domain
required: true
schema:
type: string
/api/v2/orgs/{orgUuid}/roles:
post:
operationId: CreateOrganizationRole
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDefaultRoleResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new role in organization
summary: Create custom role
tags:
- v2
- Custom Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRole'
get:
operationId: GetOrganizationRoles
responses:
'200':
description: Success
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ApiGetRolesResponse'
- $ref: '#/components/schemas/ApiRoleWithScopesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get roles for organization
summary: Get organization roles
tags:
- v2
- Organization Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: query
name: load
required: false
schema:
type: string
- in: query
name: roleTypeFilter
required: false
schema:
type: string
/api/v2/orgs/{orgUuid}/roles/{roleUuid}:
patch:
operationId: UpdateOrganizationRole
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDefaultRoleResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update role in organization
summary: Update custom role
tags:
- v2
- Custom Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRole'
delete:
operationId: DeleteOrganizationRole
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete role from organization
summary: Delete custom role
tags:
- v2
- Custom Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
get:
operationId: GetCustomRoleByUuid
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleWithScopesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get custom role by uuid
summary: Get custom role
tags:
- v2
- Organization Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
/api/v2/orgs/{orgUuid}/roles/{roleUuid}/assignees:
get:
operationId: GetOrganizationRoleAssignees
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssigneesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'List the users, groups, and service accounts currently assigned
to a role.
Used by the delete-confirmation modal to explain why a role cannot
be deleted while still in use.'
summary: List role assignees
tags:
- v2
- Custom Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
/api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes:
post:
operationId: AddScopesToRole
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Add scopes to role
summary: Add scopes to role
tags:
- v2
- Custom Roles
deprecated: true
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddScopesToRole'
/api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes/{scopeName}:
delete:
operationId: RemoveScopeFromRole
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRemoveScopeFromRoleResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove scope from role
summary: Remove scope from role
tags:
- v2
- Custom Roles
deprecated: true
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleUuid
required: true
schema:
type: string
- in: path
name: scopeName
required: true
schema:
type: string
/api/v1/aiAgents/admin/threads:
get:
operationId: getAllThreads
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentAdminConversationsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all AI agent threads for admin
summary: List AI agent threads
security: []
parameters:
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: projectUuids
required: false
schema:
type: array
items:
type: string
- in: query
name: agentUuids
required: false
schema:
type: array
items:
type: string
- in: query
name: userUuids
required: false
schema:
type: array
items:
type: string
- in: query
name: createdFrom
required: false
schema:
type: string
enum:
- slack
- web_app
- in: query
name: humanScore
required: false
schema:
format: double
type: number
- in: query
name: dateFrom
required: false
schema:
type: string
- in: query
name: dateTo
required: false
schema:
type: string
- in: query
name: search
required: false
schema:
type: string
- in: query
name: sortField
required: false
schema:
$ref: '#/components/schemas/AiAgentAdminSortField'
- in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
/api/v1/aiAgents/admin/agents:
get:
operationId: getAllAgents
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentSummaryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all AI agents for admin
summary: List AI agents
security: []
parameters: []
/api/v1/aiAgents/admin/review-items:
get:
operationId: getAiAgentReviewItems
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get AI agent classifier review items for admin
summary: List AI agent review items
security: []
parameters:
- in: query
name: status
required: false
schema:
type: array
items:
$ref: '#/components/schemas/AiAgentReviewItemStatus'
/api/v1/aiAgents/admin/review-items/{fingerprint}:
get:
operationId: getAiAgentReviewItem
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get AI agent classifier review signals for admin debugging
summary: List AI agent review signals
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
patch:
operationId: updateAiAgentReviewItemStatus
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update the status of an AI agent review item (e.g. dismiss it)
summary: Update AI agent review item status
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAiAgentReviewItemStatus'
/api/v1/aiAgents/admin/review-items/{fingerprint}/activity:
get:
operationId: getAiAgentReviewItemActivity
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemActivityResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the remediation activity feed for a review item
summary: Get AI agent review item activity
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
/api/v1/aiAgents/admin/review-items/{fingerprint}/pr-diff:
get:
operationId: getAiAgentReviewItemPrDiff
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemPrDiffResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the file diff of the pull request linked to a review item
summary: Get AI agent review item PR diff
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
/api/v1/aiAgents/admin/review-items/by-preview-thread/{threadUuid}:
get:
operationId: getAiAgentReviewItemByPreviewThread
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the review item linked to a remediation preview work thread
summary: Get AI agent review item by preview thread
security: []
parameters:
- in: path
name: threadUuid
required: true
schema:
type: string
/api/v1/aiAgents/admin/review-items/{fingerprint}/writeback:
post:
operationId: createAiAgentReviewItemWriteback
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Open a writeback pull request for a review item (semantic-layer
or
project-context root cause)'
summary: Create AI agent review item writeback PR
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
/api/v1/aiAgents/admin/review-items/{fingerprint}/writeback-preview:
get:
operationId: getAiAgentReviewItemWritebackPreview
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewItemWritebackPreviewResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Preview the file change a writeback PR would make, without opening
it.
Only project_context findings have a deterministic diff.'
summary: Preview AI agent review item writeback diff
security: []
parameters:
- in: path
name: fingerprint
required: true
schema:
type: string
/api/v1/aiAgents/admin/review-signals:
get:
operationId: getAiAgentReviewSignals
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiAgentReviewSignalsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
security: []
parameters: []
/api/v1/aiAgents/admin/settings:
get:
operationId: getAiOrganizationSettings
responses:
'200':
description: Retrieved AI organization settings
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAiOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get AI organization settings
summary: Get AI settings
security: []
parameters: []
patch:
operationId: upsertAiOrganizationSettings
responses:
'200':
description: Updated AI organization settings
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateAiOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update AI organization settings
summary: Update AI settings
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAiOrganizationSettings'
/api/v1/projects/{projectUuid}/validate:
post:
operationId: ValidateProject
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Validate content inside a project. This will start a validation
job and return the job id.
Validation jobs scan all charts and dashboards inside a project to find any
broken references
to metrics or dimensions that aren''t available. Results are available after
the job is completed.'
summary: Validate project
tags:
- Projects
security: []
parameters:
- description: the projectId for the validation
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: the compiled explores to validate against an existing project,
this is used in the CLI to validate a project without creating a preview
required: true
content:
application/json:
schema:
properties:
validationTargets:
items:
$ref: '#/components/schemas/ValidationTarget'
type: array
explores:
items:
$ref: '#/components/schemas/AnyType'
type: array
onlyValidateExploresInArgs:
type: boolean
type: object
description: the compiled explores to validate against an existing project,
this is used in the CLI to validate a project without creating a preview
get:
operationId: GetLatestValidationResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiValidateResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get validation results for a project. This will return the results
of the latest validation job.
summary: Get validation results
tags:
- Projects
security: []
parameters:
- description: the projectId for the validation
in: path
name: projectUuid
required: true
schema:
type: string
- description: boolean to know if this request is made from the settings page,
for analytics
in: query
name: fromSettings
required: false
schema:
type: boolean
- description: optional jobId to get results for a specific job, used on CLI
in: query
name: jobId
required: false
schema:
type: string
/api/v1/projects/{projectUuid}/validate/{validationIdOrUuid}:
delete:
operationId: DeleteValidationDismiss
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiValidationDismissResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Deletes a single validation error.
summary: Dismiss validation error
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: 'the validation UUID, or a legacy integer id
for rows created before the UUID migration (PROD-7386).'
in: path
name: validationIdOrUuid
required: true
schema: {}
/api/v1/projects/{projectUuid}/validate/chart/{chartUuid}:
post:
operationId: ValidateChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartValidationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Validates a specific chart and updates validation entries in database.
summary: Validate specific chart
tags:
- Projects
security: []
parameters:
- description: the project UUID
in: path
name: projectUuid
required: true
schema:
type: string
- description: the chart UUID to validate
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/validate/dashboard/{dashboardUuid}:
post:
operationId: ValidateDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardValidationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Validates a specific dashboard and updates validation entries in
database.
summary: Validate specific dashboard
tags:
- Projects
security: []
parameters:
- description: the project UUID
in: path
name: projectUuid
required: true
schema:
type: string
- description: the dashboard UUID to validate
in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/user:
get:
operationId: GetAuthenticatedUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetAuthenticatedUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get authenticated user
summary: Get authenticated user
tags:
- My Account
security: []
parameters: []
post:
operationId: RegisterUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRegisterUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Register user
summary: Register user
tags:
- My Account
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterOrActivateUser'
/api/v1/user/me/email/otp:
put:
operationId: CreateEmailOneTimePasscode
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmailStatusResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Create a new one-time passcode for the current user''s primary
email.
The user will receive an email with the passcode.'
summary: Create email one-time passcode
tags:
- My Account
security: []
parameters: []
/api/v1/user/me/email/status:
get:
operationId: GetEmailVerificationStatus
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmailStatusResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the verification status for the current user's primary email
summary: Get email verification status
tags:
- My Account
security: []
parameters:
- description: the one-time passcode sent to the user's primary email
in: query
name: passcode
required: false
schema:
type: string
/api/v1/user/me/allowedOrganizations:
get:
operationId: ListMyAvailableOrganizations
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserAllowedOrganizationsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'List the organizations that the current user can join.
This is based on the user''s primary email domain and the organization''s
allowed email domains.'
summary: List available organizations
tags:
- My Account
security: []
parameters: []
/api/v1/user/me/joinOrganization/{organizationUuid}:
post:
operationId: JoinOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Add the current user to an organization that accepts users with
a verified email domain.
This will fail if the organization email domain does not match the user''s
primary email domain.'
summary: Join organization
tags:
- My Account
security: []
parameters:
- description: the uuid of the organization to join
in: path
name: organizationUuid
required: true
schema:
type: string
/api/v1/user/me/leaveOrganization:
delete:
operationId: LeaveOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Remove the current user from their organization. Fails if the
caller is
the only admin remaining. The user record is preserved so they can join
another organization later.'
summary: Leave organization
tags:
- My Account
security: []
parameters: []
/api/v1/user/me:
delete:
operationId: DeleteMe
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete user
summary: Delete user
tags:
- My Account
security: []
parameters: []
/api/v1/user/warehouseCredentials:
get:
operationId: getWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/UserWarehouseCredentials'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get user warehouse credentials
summary: List warehouse credentials
tags:
- My Account
security: []
parameters: []
post:
operationId: createWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/UserWarehouseCredentials'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create user warehouse credentials
summary: Create warehouse credentials
tags:
- My Account
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertUserWarehouseCredentials'
/api/v1/user/warehouseCredentials/{uuid}:
patch:
operationId: updateWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/UserWarehouseCredentials'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update user warehouse credentials
summary: Update warehouse credentials
tags:
- My Account
security: []
parameters:
- in: path
name: uuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertUserWarehouseCredentials'
delete:
operationId: deleteWarehouseCredentials
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete user warehouse credentials
summary: Delete warehouse credentials
tags:
- My Account
security: []
parameters:
- in: path
name: uuid
required: true
schema:
type: string
/api/v1/user/login-options:
get:
operationId: getLoginOptions
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetLoginOptionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get login options
summary: Get login options
tags:
- My Account
security: []
parameters:
- in: query
name: email
required: false
schema:
type: string
/api/v1/user/me/personal-access-tokens:
get:
operationId: Get personal access tokens
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/PersonalAccessToken'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List personal access tokens
summary: List personal access tokens
tags:
- My Account
security: []
parameters: []
post:
operationId: Create personal access token
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/PersonalAccessTokenWithToken'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create personal access token
summary: Create personal access token
tags:
- My Account
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePersonalAccessToken'
/api/v1/user/me/personal-access-tokens/{personalAccessTokenUuid}:
delete:
operationId: Delete personal access token
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 personal access token
summary: Delete personal access token
tags:
- My Account
security: []
parameters:
- in: path
name: personalAccessTokenUuid
required: true
schema:
type: string
/api/v1/user/me/personal-access-tokens/{personalAccessTokenUuid}/rotate:
patch:
operationId: Rotate personal access token
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/PersonalAccessTokenWithToken'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rotate personal access token
summary: Rotate personal access token
tags:
- My Account
security: []
parameters:
- in: path
name: personalAccessTokenUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
expiresAt:
type: string
format: date-time
required:
- expiresAt
type: object
/api/v1/user/account:
get:
operationId: GetAccount
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetAccountResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get account information
summary: Get account
tags:
- My Account
security: []
parameters: []
/api/v1/org/attributes:
get:
operationId: getUserAttributes
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserAttributesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all user attributes
summary: List user attributes
tags:
- User attributes
security: []
parameters: []
post:
operationId: createUserAttribute
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateUserAttributeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Creates new user attribute
summary: Create user attribute
tags:
- User attributes
security: []
parameters: []
requestBody:
description: the user attribute to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserAttribute'
description: the user attribute to create
/api/v1/org/attributes/{userAttributeUuid}:
put:
operationId: updateUserAttribute
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateUserAttributeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Updates a user attribute
summary: Update user attribute
tags:
- User attributes
security: []
parameters:
- description: the UUID for the group to add the user to
in: path
name: userAttributeUuid
required: true
schema:
type: string
requestBody:
description: the user attribute to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserAttribute'
description: the user attribute to update
delete:
operationId: removeUserAttribute
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a user attribute
summary: Delete user attribute
tags:
- User attributes
security: []
parameters:
- description: the user attribute UUID to remove
in: path
name: userAttributeUuid
required: true
schema:
type: string
/api/v1/analytics/user-activity/{projectUuid}:
get:
operationId: getUserActivity
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserActivity'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get user activity for a project
summary: Get user activity
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/analytics/user-activity/{projectUuid}/download:
post:
operationId: downloadUserActivityCsv
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserActivityDownloadCsv'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Download user activity as CSV
summary: Download user activity CSV
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/analytics/user-activity/{projectUuid}/download-activity:
get:
operationId: getDownloadActivity
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDownloadActivity'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: "Get download activity log for a project, ordered by most recent\
\ first.\nTwo pagination modes are supported:\n - Offset mode: pass `page`\
\ (1-indexed) and `pageSize`. Response includes\n `page`/`totalResults`/`totalPageCount`.\n\
\ - Cursor mode: pass `cursor` (from a previous response's `nextCursor`) and\n\
\ `pageSize`. `page` is ignored when `cursor` is provided. Avoids the count\n\
\ query so `page`/`totalResults`/`totalPageCount` are null in the response."
summary: Get download activity log
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: true
schema:
format: double
type: number
- description: page number (1-indexed); defaults to 1 if omitted
in: query
name: page
required: false
schema:
format: double
type: number
- description: opaque cursor from a previous response's `nextCursor`
in: query
name: cursor
required: false
schema:
type: string
/api/v1/ssh/key-pairs:
post:
operationId: createSshKeyPair
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSshKeyPairResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new SSH key pair
summary: Create SSH key pair
tags:
- SSH Keypairs
security: []
parameters: []
/api/v1/projects/{projectUuid}/sqlRunner/tables:
get:
operationId: getTables
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiWarehouseTablesCatalog'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get warehouse tables for a project
summary: List warehouse tables
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/fields:
get:
operationId: getTableFields
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiWarehouseTableFields'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get fields for a warehouse table
summary: Get table fields
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: tableName
required: false
schema:
type: string
- in: query
name: schemaName
required: false
schema:
type: string
- in: query
name: databaseName
required: false
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/run:
post:
operationId: runSql
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Run a SQL query
summary: Run SQL query
tags:
- SQL runner
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SqlRunnerBody'
/api/v1/projects/{projectUuid}/sqlRunner/runPivotQuery:
post:
operationId: runSqlPivotQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Run a SQL pivot query
summary: Run SQL pivot query
tags:
- SQL runner
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SqlRunnerPivotQueryBody'
/api/v1/projects/{projectUuid}/sqlRunner/results/{fileId}:
get:
operationId: getLocalResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnyType'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get results from a file stored locally
summary: Get stored results
tags:
- SQL runner
deprecated: true
security: []
parameters:
- description: the fileId for the file
in: path
name: fileId
required: true
schema:
type: string
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved/{uuid}:
get:
operationId: getSavedSqlChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSqlChart'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get saved sql chart
summary: Get SQL chart
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the saved sql chart
in: path
name: uuid
required: true
schema:
type: string
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
patch:
operationId: updateSqlChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateSqlChart'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update sql chart
summary: Update SQL chart
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: the uuid for the saved sql chart
in: path
name: uuid
required: true
schema:
type: string
requestBody:
description: the sql chart details to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSqlChart'
description: the sql chart details to update
delete:
operationId: deleteSqlChart
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 sql chart
summary: Delete SQL chart
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: the uuid for the saved sql chart
in: path
name: uuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved/slug/{slug}:
get:
operationId: getSavedSqlChartBySlug
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSqlChart'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get saved sql chart
summary: Get SQL chart by slug
tags:
- SQL runner
security: []
parameters:
- description: the slug for the saved sql chart
in: path
name: slug
required: true
schema:
type: string
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved/slug/{slug}/results-job:
get:
operationId: getSavedSqlResultsJob
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Schedules a job to get its results
summary: Get SQL chart results job
tags:
- SQL runner
deprecated: true
security: []
parameters:
- description: '- the slug of the saved chart'
in: path
name: slug
required: true
schema:
type: string
- description: '- the uuid of the project'
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved/{uuid}/results-job:
get:
operationId: getSavedSqlResultsJobByUuid
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Schedules a job to get its results
summary: Get SQL chart results job by UUID
tags:
- SQL runner
deprecated: true
security: []
parameters:
- description: '- the uuid of the saved chart'
in: path
name: uuid
required: true
schema:
type: string
- description: '- the uuid of the project'
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved:
post:
operationId: createSqlChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateSqlChart'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create sql chart
summary: Create SQL chart
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: the sql chart to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSqlChart'
description: the sql chart to create
/api/v1/projects/{projectUuid}/sqlRunner/saved/{uuid}/promote:
post:
operationId: promoteSqlChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSqlChart'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Promote SQL chart to upstream project
summary: Promote SQL chart
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: the uuid for the saved sql chart
in: path
name: uuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/saved/{uuid}/promoteDiff:
get:
operationId: promoteSqlChartDiff
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPromotionChangesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get diff from SQL chart to promote
summary: Get SQL chart promotion diff
tags:
- SQL runner
security: []
parameters:
- description: the uuid for the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: the uuid for the saved sql chart
in: path
name: uuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/refresh-catalog:
post:
operationId: refreshSqlRunnerCatalog
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Refresh the catalog cache
summary: Refresh catalog cache
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/virtual-view:
post:
operationId: createVirtualView
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateVirtualView'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a virtual-view
summary: Create virtual view
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVirtualViewPayload'
/api/v1/projects/{projectUuid}/sqlRunner/virtual-view/{name}:
put:
operationId: updateVirtualView
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateVirtualView'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a virtual view
summary: Update virtual view
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: name
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateVirtualViewPayload'
delete:
operationId: deleteVirtualView
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 a virtual-view
summary: Delete virtual view
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: name
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/sqlRunner/preview:
post:
operationId: writeBackPreview
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGithubDbtWritePreview'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Preview write back from SQL runner
summary: Preview write back
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVirtualViewPayload'
/api/v1/projects/{projectUuid}/sqlRunner/pull-request:
post:
operationId: writeBackCreatePr
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGithubDbtWriteBack'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Write back from SQL runner
summary: Create write back PR
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVirtualViewPayload'
/api/v1/projects/{projectUuid}/sqlRunner/saved/{savedSqlUuid}/schedulers:
get:
operationId: getSqlChartSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/SchedulerAndTargets'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all schedulers for a SQL chart
summary: List SQL chart schedulers
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: savedSqlUuid
required: true
schema:
type: string
post:
operationId: createSqlChartScheduler
responses:
'201':
description: Created
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/SchedulerAndTargets'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a scheduler for a SQL chart
summary: Create SQL chart scheduler
tags:
- SQL runner
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: savedSqlUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSchedulerAndTargetsWithoutIds'
/api/v1/projects/{projectUuid}/spotlight/table/config:
post:
operationId: postSpotlightTableConfig
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create or update spotlight table configuration
summary: Update spotlight table config
tags:
- Spotlight
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pick_SpotlightTableConfig.columnConfig_'
get:
operationId: getSpotlightTableConfig
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetSpotlightTableConfig'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get spotlight table configuration
summary: Get spotlight table config
tags:
- Spotlight
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
delete:
operationId: resetSpotlightTableConfig
responses:
'200':
description: Deleted
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Reset spotlight table configuration to defaults
summary: Reset spotlight table config
tags:
- Spotlight
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}:
get:
operationId: GetSpace
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSpaceResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get details for a space in a project
summary: Get space
tags:
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to get
in: path
name: spaceUuid
required: true
schema:
type: string
delete:
operationId: DeleteSpace
responses:
'204':
description: Deleted
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a space from a project
summary: Delete space
tags:
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to delete
in: path
name: spaceUuid
required: true
schema:
type: string
patch:
operationId: UpdateSpace
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSpaceResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a space in a project
summary: Update space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to update
in: path
name: spaceUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSpace'
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}/delete-impact:
get:
operationId: GetSpaceDeleteImpact
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSpaceDeleteImpactResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the impact of deleting a space (affected child spaces, charts,
dashboards)
summary: Get delete impact
tags:
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to check
in: path
name: spaceUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/spaces:
post:
operationId: CreateSpaceInProject
responses:
'200':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSpaceResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new space inside a project
summary: Create space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSpace'
get:
operationId: ListSpacesInProject
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSpaceSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all spaces in a project
summary: List spaces in project
tags:
- Projects
security: []
parameters:
- description: The uuid of the project to get spaces for
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}/share:
post:
operationId: AddSpaceUserAccess
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Grant a user access to a space
summary: Grant user access to space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: spaceUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddSpaceUserAccess'
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}/share/{userUuid}:
delete:
operationId: RevokeSpaceAccessForUser
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a user's access to a space
summary: Revoke user access to space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to update
in: path
name: spaceUuid
required: true
schema:
type: string
- description: The uuid of the user to revoke access from
in: path
name: userUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}/group/share:
post:
operationId: AddSpaceGroupAccess
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Grant a group access to a space
summary: Grant group access to space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to update
in: path
name: spaceUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddSpaceGroupAccess'
/api/v1/projects/{projectUuid}/spaces/{spaceUuid}/group/share/{groupUuid}:
delete:
operationId: RevokeGroupSpaceAccess
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a group's access to a space
summary: Revoke group access to space
tags:
- Roles & Permissions
- Spaces
security: []
parameters:
- description: The uuid of the space's parent project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the space to update
in: path
name: spaceUuid
required: true
schema:
type: string
- description: The uuid of the group to revoke access from
in: path
name: groupUuid
required: true
schema:
type: string
/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/share/{nanoId}:
get:
operationId: getShareUrl
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiShareResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a share url from a short url id
summary: Get share URL
tags:
- Share links
security: []
parameters:
- description: the short id for the share url
in: path
name: nanoId
required: true
schema:
type: string
/api/v1/share:
post:
operationId: CreateShareUrl
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiShareResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Given a full URL generates a short url id that can be used for
sharing
summary: Create share URL
tags:
- Share links
security: []
parameters: []
requestBody:
description: a full URL used to generate a short url id
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShareUrl'
description: a full URL used to generate a short url id
/api/v1/schedulers/{projectUuid}/logs:
get:
operationId: getSchedulerLogs
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerLogsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get scheduled logs
summary: Get scheduler logs
tags:
- Schedulers
deprecated: true
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: search query to filter logs by scheduler name
in: query
name: searchQuery
required: false
schema:
type: string
- description: filter by log statuses (comma-separated)
in: query
name: statuses
required: false
schema:
type: string
- description: filter by creator user UUIDs (comma-separated)
in: query
name: createdByUserUuids
required: false
schema:
type: string
- description: 'filter by destination types (comma-separated: email, slack,
msteams, googlechat)'
in: query
name: destinations
required: false
schema:
type: string
/api/v1/schedulers/{projectUuid}/runs:
get:
operationId: getSchedulerRuns
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerRunsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get paginated scheduler runs with aggregated child job counts
summary: List scheduler runs
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: search query to filter runs by scheduler name
in: query
name: searchQuery
required: false
schema:
type: string
- description: column to sort by (scheduledTime, createdAt)
in: query
name: sortBy
required: false
schema:
type: string
enum:
- scheduledTime
- createdAt
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: filter by specific scheduler UUIDs (comma-separated)
in: query
name: schedulerUuids
required: false
schema:
type: string
- description: 'filter by run statuses (comma-separated: completed, partial_failure,
failed, running, scheduled)'
in: query
name: statuses
required: false
schema:
type: string
- description: filter by creator user UUIDs (comma-separated)
in: query
name: createdByUserUuids
required: false
schema:
type: string
- description: 'filter by destination types (comma-separated: email, slack,
msteams, googlechat)'
in: query
name: destinations
required: false
schema:
type: string
- description: filter by resource type (chart or dashboard)
in: query
name: resourceType
required: false
schema:
type: string
enum:
- chart
- dashboard
- description: filter by resource UUIDs (comma-separated)
in: query
name: resourceUuids
required: false
schema:
type: string
/api/v1/schedulers/runs/{runId}/logs:
get:
operationId: getRunLogs
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerRunLogsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get detailed logs for a specific scheduler run
summary: Get run logs
tags:
- Schedulers
security: []
parameters:
- description: The ID of the run (parent job ID)
in: path
name: runId
required: true
schema:
type: string
/api/v1/schedulers/user-schedulers:
get:
operationId: listUserSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all schedulers for the current user across all projects with
pagination, search, sorting, and filtering
summary: List user schedulers
tags:
- Schedulers
security: []
parameters:
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: search query to filter schedulers by name
in: query
name: searchQuery
required: false
schema:
type: string
- description: column to sort by
in: query
name: sortBy
required: false
schema:
type: string
enum:
- name
- createdAt
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: filter by scheduler formats (comma-separated)
in: query
name: formats
required: false
schema:
type: string
- description: filter by resource type (chart or dashboard)
in: query
name: resourceType
required: false
schema:
type: string
enum:
- chart
- dashboard
- description: filter by resource UUIDs (comma-separated)
in: query
name: resourceUuids
required: false
schema:
type: string
- description: 'filter by destination types (comma-separated: email, slack,
msteams, googlechat)'
in: query
name: destinations
required: false
schema:
type: string
- description: include latest run information for each scheduler
in: query
name: includeLatestRun
required: false
schema:
type: boolean
/api/v1/schedulers/{projectUuid}/list:
get:
operationId: ListSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all schedulers with pagination, search, sorting, and filtering
summary: List schedulers
tags:
- Schedulers
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: search query to filter schedulers by name
in: query
name: searchQuery
required: false
schema:
type: string
- description: column to sort by
in: query
name: sortBy
required: false
schema:
type: string
enum:
- name
- createdAt
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: filter by creator user UUIDs (comma-separated)
in: query
name: createdByUserUuids
required: false
schema:
type: string
- description: filter by scheduler formats (comma-separated)
in: query
name: formats
required: false
schema:
type: string
- description: filter by resource type (chart or dashboard)
in: query
name: resourceType
required: false
schema:
type: string
enum:
- chart
- dashboard
- description: filter by resource UUIDs (comma-separated)
in: query
name: resourceUuids
required: false
schema:
type: string
- description: 'filter by destination types (comma-separated: email, slack,
msteams, googlechat)'
in: query
name: destinations
required: false
schema:
type: string
- in: query
name: includeLatestRun
required: false
schema:
type: boolean
/api/v1/schedulers/{schedulerUuid}:
get:
operationId: getScheduler
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerAndTargetsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a scheduler
summary: Get scheduler
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the scheduler to update
in: path
name: schedulerUuid
required: true
schema:
type: string
patch:
operationId: updateScheduler
responses:
'201':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerAndTargetsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a scheduler
summary: Update scheduler
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the scheduler to update
in: path
name: schedulerUuid
required: true
schema:
type: string
requestBody:
description: the new scheduler data
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnyType'
description: the new scheduler data
delete:
operationId: deleteScheduler
responses:
'201':
description: Deleted
content:
application/json:
schema:
properties:
results: {}
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a scheduler
summary: Delete scheduler
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the scheduler to delete
in: path
name: schedulerUuid
required: true
schema:
type: string
/api/v1/schedulers/{schedulerUuid}/enabled:
patch:
operationId: updateSchedulerEnabled
responses:
'201':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerAndTargetsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Set scheduler enabled
summary: Update scheduler enabled status
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the scheduler to update
in: path
name: schedulerUuid
required: true
schema:
type: string
requestBody:
description: the enabled flag
required: true
content:
application/json:
schema:
properties:
enabled:
type: boolean
required:
- enabled
type: object
description: the enabled flag
/api/v1/schedulers/{projectUuid}/reassign-owner:
patch:
operationId: reassignSchedulerOwner
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiReassignSchedulerOwnerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Reassign ownership of multiple schedulers
summary: Reassign scheduler owner
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: the scheduler UUIDs and new owner UUID
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReassignSchedulerOwnerRequest'
description: the scheduler UUIDs and new owner UUID
/api/v1/schedulers/{schedulerUuid}/jobs:
get:
operationId: getScheduledJobs
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiScheduledJobsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get scheduled jobs
summary: Get scheduled jobs
tags:
- Schedulers
deprecated: true
security: []
parameters:
- description: The uuid of the scheduler to update
in: path
name: schedulerUuid
required: true
schema:
type: string
/api/v1/schedulers/job/{jobId}/status:
get:
operationId: getSchedulerJobStatus
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobStatusResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get a generic job status
This method can be used when polling from the frontend'
summary: Get scheduler job status
tags:
- Schedulers
security: []
parameters:
- description: the jobId for the status to check
in: path
name: jobId
required: true
schema:
type: string
/api/v1/schedulers/send:
post:
operationId: sendScheduler
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTestSchedulerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Send a scheduler now before saving it
summary: Send scheduler
tags:
- Schedulers
security: []
parameters: []
requestBody:
description: the create scheduler data
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnyType'
description: the create scheduler data
/api/v1/schedulers/{schedulerUuid}/send:
post:
operationId: sendSchedulerByUuid
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTestSchedulerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Send an existing scheduler now by its uuid
summary: Send scheduler by uuid
tags:
- Schedulers
security: []
parameters:
- description: The uuid of the scheduler to send now
in: path
name: schedulerUuid
required: true
schema:
type: string
/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/saved/{chartUuid}/results:
post:
operationId: PostChartResults
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 saved chart 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 saved chart, then Get results.'
summary: Run chart query
tags:
- Charts
deprecated: true
security: []
parameters:
- description: chartUuid for the chart to run
in: path
name: chartUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
invalidateCache:
type: boolean
type: object
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 saved chart](https://docs.lightdash.com/api-reference/v2/execute-saved-chart)
(`POST /api/v2/projects/{projectUuid}/query/chart`) 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/saved/{chartUuid}/chart-and-results:
post:
operationId: PostDashboardTile
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 dashboard chart endpoint instead.
This endpoint was deprecated on 20 March 2025 and is past its sunset date
(20 June 2025) — it may be removed at any time. Migrate to the v2 async query
flow: Execute dashboard chart, then Get results.'
summary: Get chart and results
tags:
- Charts
deprecated: true
security: []
parameters:
- in: path
name: chartUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
autoRefresh:
type: boolean
dateZoom:
$ref: '#/components/schemas/DateZoom'
dashboardUuid:
type: string
dashboardSorts:
items:
$ref: '#/components/schemas/SortField'
type: array
invalidateCache:
type: boolean
dashboardFilters:
$ref: '#/components/schemas/AnyType'
required:
- dashboardUuid
- dashboardSorts
- dashboardFilters
type: object
x-mint:
content: '
**This endpoint is deprecated and past its sunset date (20 June 2025) —
it may be removed at any time.**
Migrate to the v2 async query flow: [Execute dashboard chart](https://docs.lightdash.com/api-reference/v2/execute-dashboard-chart)
(`POST /api/v2/projects/{projectUuid}/query/dashboard-chart`) 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/saved/{chartUuid}/history:
get:
operationId: GetChartHistory
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetChartHistoryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get chart version history from last 30 days
summary: Get chart version history
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/version/{versionUuid}:
get:
operationId: GetChartVersion
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetChartVersionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get chart version
summary: Get chart version
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart
in: path
name: chartUuid
required: true
schema:
type: string
- description: versionUuid for the chart version
in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/version/{versionUuid}/results:
post:
operationId: getChartVersionResults
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 saved chart 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 saved chart, then Get results.'
summary: Get chart version results
tags:
- Charts
deprecated: true
security: []
parameters:
- description: chartUuid for the chart to run
in: path
name: chartUuid
required: true
schema:
type: string
- description: versionUuid for the chart version
in: path
name: versionUuid
required: true
schema:
type: string
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 saved chart](https://docs.lightdash.com/api-reference/v2/execute-saved-chart)
(`POST /api/v2/projects/{projectUuid}/query/chart`) to run the chart''s
latest version, then [Get results](https://docs.lightdash.com/api-reference/v2/get-results)
to fetch rows. Running a query for a specific chart version has no v2 equivalent.
'
/api/v1/saved/{chartUuid}/rollback/{versionUuid}:
post:
operationId: postChartVersionRollback
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rollback chart to version
summary: Rollback chart to version
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart to run
in: path
name: chartUuid
required: true
schema:
type: string
- description: versionUuid for the chart version
in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/calculate-total:
post:
operationId: CalculateTotalFromSavedChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCalculateTotalResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Calculate metric totals from a saved chart
summary: Calculate total from saved chart
tags:
- Charts
deprecated: true
security: []
parameters:
- description: chartUuid for the chart to run
in: path
name: chartUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
invalidateCache:
type: boolean
dashboardFilters:
$ref: '#/components/schemas/AnyType'
type: object
/api/v1/saved/{chartUuid}/promote:
post:
operationId: promoteChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPromoteChartResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Promote chart to its upstream project
summary: Promote chart
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart to run
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/promoteDiff:
get:
operationId: promoteChartDiff
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPromotionChangesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get diff from chart to promote
summary: Get chart promotion diff
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart to check diff
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/schedulers:
get:
operationId: getSavedChartSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSavedChartSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get schedulers for a saved chart
summary: List saved chart schedulers
tags:
- Charts
deprecated: true
security: []
parameters:
- in: path
name: chartUuid
required: true
schema:
type: string
post:
operationId: createSavedChartScheduler
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateSavedChartSchedulerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a scheduler for a saved chart
summary: Create saved chart scheduler
tags:
- Charts
security: []
parameters:
- in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/export:
post:
operationId: exportSavedChartImage
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiExportChartImageResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Export a saved chart as a PNG image
summary: Export chart image
tags:
- Charts
security: []
parameters:
- description: chartUuid for the chart to export
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/saved/{chartUuid}/verification:
post:
operationId: verifyChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentVerificationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Verify a chart
summary: Verify chart
tags:
- Charts
security: []
parameters:
- description: The uuid of the chart to verify
in: path
name: chartUuid
required: true
schema:
type: string
delete:
operationId: unverifyChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentVerificationDeleteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove verification from a chart
summary: Unverify chart
tags:
- Charts
security: []
parameters:
- description: The uuid of the chart to unverify
in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/rename:
post:
operationId: rename
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rename resources in a project
summary: Rename resources
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameBody'
/api/v1/projects/{projectUuid}/rename/preview:
post:
operationId: previewRename
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Preview which resources would be affected by a bulk rename
summary: Preview rename
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameBody'
/api/v1/projects/{projectUuid}/rename/chart/{chartUuid}:
post:
operationId: renameChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameChartResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rename a chart and its fields
summary: Rename chart
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: chartUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameChartBody'
/api/v1/projects/{projectUuid}/rename/chart/{chartUuid}/fields:
get:
operationId: renameChartFields
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameFieldsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a list of fields for this chart's explore to be used when renaming
a chart in the UI
summary: Get chart fields for rename
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: chartUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/rename/dashboard/{dashboardUuid}:
post:
operationId: renameDashboardFilter
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameDashboardResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rename a dashboard filter's field or model reference
summary: Rename dashboard filter
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameDashboardBody'
/api/v1/projects/{projectUuid}/rename/dashboard/{dashboardUuid}/fields:
get:
operationId: renameDashboardFields
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRenameFieldsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a list of fields from explores referenced by the dashboard's
filters
summary: Get dashboard fields for rename
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuid
required: true
schema:
type: string
- in: query
name: table
required: false
schema:
type: string
/api/v1/projects/{projectUuid}/pull-requests:
get:
operationId: listPullRequests
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPullRequestsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List the pull requests that have been created by write-backs for
a project
summary: List pull requests
tags:
- Pull Requests
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v1/projects/{projectUuid}:
get:
operationId: GetProject
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a project of an organiztion
summary: Get project
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/charts:
get:
operationId: ListChartsInProject
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all charts in a project
summary: List charts in project
tags:
- Projects
security: []
parameters:
- description: The uuid of the project to get charts for
in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/chart-summaries:
get:
operationId: ListChartSummariesInProject
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all charts summaries in a project
summary: List chart summaries in project
tags:
- Projects
deprecated: true
security: []
parameters:
- description: The uuid of the project to get charts for
in: path
name: projectUuid
required: true
schema:
type: string
- description: Whether to exclude charts that are saved in dashboards
in: query
name: excludeChartsSavedInDashboard
required: false
schema:
type: boolean
/api/v1/projects/{projectUuid}/access:
get:
operationId: GetProjectAccessList
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectAccessListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get access list for a project. This is a list of users that have
been explictly granted access to the project.
There may be other users that have access to the project via their organization
membership.'
summary: List project access
tags:
- Roles & Permissions
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: GrantProjectAccessToUser
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Grant a user access to a project
summary: Grant project access to user
tags:
- Roles & Permissions
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectMember'
/api/v1/projects/{projectUuid}/user/{userUuid}:
get:
operationId: GetProjectMemberAccess
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetProjectMemberResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get a project explicit member''s access.
There may be users that have access to the project via their organization
membership.'
summary: Get project member access
tags:
- Roles & Permissions
- Projects
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: userUuid
required: true
schema:
type: string
/api/v1/projects/preview-data-timezone:
post:
operationId: PreviewDataTimezone
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDataTimezonePreview'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Preview how the warehouse disambiguates "now" under a data timezone
summary: Preview data timezone
tags:
- Projects
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DataTimezonePreviewRequest'
/api/v1/projects/{projectUuid}/access/{userUuid}:
patch:
operationId: UpdateProjectAccessForUser
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a user's access to a project
summary: Update project access for user
tags:
- Roles & Permissions
- Projects
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: userUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectMember'
delete:
operationId: RevokeProjectAccessForUser
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a user's access to a project
summary: Revoke project access for user
tags:
- Roles & Permissions
- Projects
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: userUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/groupAccesses:
get:
operationId: GetProjectGroupAccesses
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetProjectGroupAccesses'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List group access for projects
summary: List project group accesses
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/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
- Projects
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).
'
/api/v1/projects/{projectUuid}/calculate-total:
post:
operationId: CalculateTotalFromQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCalculateTotalResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Calculate all metric totals from a metricQuery
summary: Calculate total from query
tags:
- Projects
deprecated: true
security: []
parameters:
- description: The uuid of the project to get charts for
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: The metric query to calculate totals for
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CalculateTotalFromQuery'
description: The metric query to calculate totals for
/api/v1/projects/{projectUuid}/calculate-subtotals:
post:
operationId: CalculateSubtotalsFromQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCalculateSubtotalsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Calculate subtotals from a metricQuery
summary: Calculate subtotals from query
tags:
- Projects
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CalculateSubtotalsFromQuery'
/api/v1/projects/{projectUuid}/user-credentials:
get:
operationId: getUserWarehouseCredentialsPreference
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/UserWarehouseCredentials'
status:
type: string
enum:
- ok
nullable: false
required:
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the user's warehouse credentials preference for a project
summary: Get user warehouse credentials preference
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/user-warehouse-credentials:
get:
operationId: getProjectUserWarehouseCredentials
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/UserWarehouseCredentials'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get user warehouse credentials available for a project
summary: List project user warehouse credentials
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/user-credentials/{userWarehouseCredentialsUuid}:
patch:
operationId: updateUserWarehouseCredentialsPreference
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update the user's warehouse credentials preference for a project
summary: Update user warehouse credentials preference
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: userWarehouseCredentialsUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/custom-metrics:
get:
operationId: getCustomMetrics
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
items:
properties:
chartUrl:
type: string
chartLabel:
type: string
yml:
type: string
modelName:
type: string
label:
type: string
name:
type: string
required:
- chartUrl
- chartLabel
- yml
- modelName
- label
- name
type: object
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all custom metrics in a project
summary: List custom metrics
tags:
- Projects
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/metadata:
patch:
operationId: updateProjectMetadata
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Update project metadata like upstreamProjectUuid
we don''t trigger a compile, so not for updating warehouse or credentials'
summary: Update project metadata
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMetadata'
/api/v1/projects/{projectUuid}/hasDefaultUserSpaces:
patch:
operationId: updateDefaultUserSpaces
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Toggle default user spaces for a project.
When enabled, creates personal spaces for all eligible users.'
summary: Update default user spaces setting
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDefaultUserSpaces'
/api/v1/projects/{projectUuid}/table-groups:
get:
operationId: getProjectTableGroups
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiTableGroupsResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get the resolved color palette for a project, walking the
chart -> dashboard -> space -> project -> organization fallback chain
(matches saved-chart resolution). The optional UUIDs let unsaved
renderers (Explore, AI viz, sql runner) opt into deeper layers as
they become available.'
summary: Get project color palette
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
put:
operationId: replaceProjectTableGroups
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_undefined_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Replace project-level table-group definitions. Sent by the CLI
on
deploy/preview so labels & descriptions from `table_groups` in
`lightdash.config.yml` are applied. Pass an empty object to clear.'
summary: Replace project table groups
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiTableGroupsResults'
/api/v1/projects/{projectUuid}/colorPalette:
get:
operationId: getProjectColorPalette
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectColorPaletteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: spaceUuid
required: false
schema:
type: string
- in: query
name: dashboardUuid
required: false
schema:
type: string
- in: query
name: chartUuid
required: false
schema:
type: string
patch:
operationId: updateProjectColorPalette
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Set the project''s color palette to one of its organization''s
palettes,
or null to inherit from the organization''s active palette.'
summary: Update project color palette
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
colorPaletteUuid:
type: string
nullable: true
required:
- colorPaletteUuid
type: object
/api/v1/projects/{projectUuid}/dashboards:
get:
operationId: getDashboards
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetDashboardsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all dashboards in a project
summary: List dashboards
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: createDashboard
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateDashboardResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new dashboard in a project
summary: Create dashboard
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: duplicateFrom
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DuplicateDashboardParams'
- $ref: '#/components/schemas/CreateDashboard'
patch:
operationId: updateDashboards
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateDashboardsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update multiple dashboards
summary: Update dashboards
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
items:
$ref: '#/components/schemas/UpdateMultipleDashboards'
type: array
/api/v1/projects/{projectUuid}/dashboards/with-charts:
post:
operationId: createDashboardWithCharts
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateDashboardWithChartsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new dashboard with embedded charts
summary: Create dashboard with charts
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDashboardWithCharts'
/api/v1/projects/{projectUuid}/createPreview:
post:
operationId: createPreview
responses:
'200':
description: Created
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCreatePreviewResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a preview project
summary: Create project preview
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
warehouseConnectionOverrides:
properties:
schema:
type: string
type: object
dbtConnectionOverrides:
properties:
manifest:
type: string
environment:
items:
$ref: '#/components/schemas/DbtProjectEnvironmentVariable'
type: array
branch:
type: string
type: object
copyContent:
type: boolean
name:
type: string
required:
- copyContent
- name
type: object
/api/v1/projects/{projectUuid}/upstreamDiff:
get:
operationId: getUpstreamDiff
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpstreamDiffResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Diff a preview project against the project it was copied from,
using the
catalog index. Detects added/removed fields and label changes; does not
detect SQL-only field changes.'
summary: Get upstream diff
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/previews-config:
get:
operationId: getProjectPreviewExpirationSettings
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPreviewExpirationProjectSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get preview project expiration settings for a project
summary: Get preview expiration settings
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
patch:
operationId: updateProjectPreviewExpirationSettings
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPreviewExpirationProjectSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update preview project expiration settings for a project
summary: Update preview expiration settings
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePreviewExpirationProjectSettings'
/api/v1/projects/{projectUuid}/schedulerSettings:
patch:
operationId: updateSchedulerSettings
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update scheduler settings for a project
summary: Update scheduler settings
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSchedulerSettings'
/api/v1/projects/{projectUuid}/queryTimezoneSettings:
patch:
operationId: updateQueryTimezoneSettings
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update query timezone settings for a project
summary: Update query timezone settings
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateQueryTimezoneSettings'
/api/v1/projects/{projectUuid}/tags:
post:
operationId: createTag
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateTagResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new tag in a project
summary: Create tag
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pick_Tag.name-or-color_'
get:
operationId: getTags
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetTagsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all tags in a project
summary: List tags
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/tags/{tagUuid}:
delete:
operationId: deleteTag
responses:
'204':
description: Deleted
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a tag from a project
summary: Delete tag
tags:
- Projects
security: []
parameters:
- in: path
name: tagUuid
required: true
schema:
type: string
patch:
operationId: updateTag
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a tag in a project
summary: Update tag
tags:
- Projects
security: []
parameters:
- in: path
name: tagUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DbTagUpdate'
/api/v1/projects/{projectUuid}/tags/yaml:
put:
operationId: replaceYamlTags
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Replace all YAML-defined tags in a project
summary: Replace YAML tags
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
items:
allOf:
- $ref: '#/components/schemas/Pick_Tag.name-or-color_'
- properties:
yamlReference:
type: string
required:
- yamlReference
type: object
type: array
/api/v1/projects/{projectUuid}/charts/code:
get:
operationId: getChartsAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartAsCodeListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get charts in code representation
summary: List charts as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: ids
required: false
schema:
type: array
items:
type: string
- in: query
name: offset
required: false
schema:
format: double
type: number
- in: query
name: languageMap
required: false
schema:
type: boolean
/api/v1/projects/{projectUuid}/dashboards/code:
get:
operationId: getDashboardsAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardAsCodeListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get dashboards in code representation
summary: List dashboards as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: ids
required: false
schema:
type: array
items:
type: string
- in: query
name: offset
required: false
schema:
format: double
type: number
- in: query
name: languageMap
required: false
schema:
type: boolean
/api/v1/projects/{projectUuid}/charts/{slug}/code:
post:
operationId: upsertChartAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartAsCodeUpsertResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Upsert a chart from code representation
summary: Upsert chart as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: slug
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Omit_ChartAsCode.chartConfig-or-description_'
- properties:
description:
type: string
nullable: true
chartConfig:
$ref: '#/components/schemas/AnyType'
spaceNames:
$ref: '#/components/schemas/Record_string.string_'
force:
type: boolean
publicSpaceCreate:
type: boolean
skipSpaceCreate:
type: boolean
required:
- chartConfig
type: object
/api/v1/projects/{projectUuid}/sqlCharts/code:
get:
operationId: getSqlChartsAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSqlChartAsCodeListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets SQL charts in code representation
summary: Get SQL charts as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: ids
required: false
schema:
type: array
items:
type: string
- in: query
name: offset
required: false
schema:
format: double
type: number
/api/v1/projects/{projectUuid}/sqlCharts/{slug}/code:
post:
operationId: upsertSqlChartAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSqlChartAsCodeUpsertResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Upserts an SQL chart from code representation
summary: Upsert SQL chart as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: slug
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Omit_SqlChartAsCode.config-or-description_'
- properties:
description:
type: string
nullable: true
config:
$ref: '#/components/schemas/AnyType'
spaceNames:
$ref: '#/components/schemas/Record_string.string_'
force:
type: boolean
publicSpaceCreate:
type: boolean
skipSpaceCreate:
type: boolean
required:
- config
type: object
/api/v1/projects/{projectUuid}/dashboards/{slug}/code:
post:
operationId: upsertDashboardAsCode
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardAsCodeUpsertResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Upsert a dashboard from code representation
summary: Upsert dashboard as code
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: slug
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Omit_DashboardAsCode.tiles-or-description_'
- properties:
description:
type: string
nullable: true
tiles:
$ref: '#/components/schemas/AnyType'
spaceNames:
$ref: '#/components/schemas/Record_string.string_'
force:
type: boolean
publicSpaceCreate:
type: boolean
skipSpaceCreate:
type: boolean
required:
- tiles
type: object
/api/v1/projects/{projectUuid}/dbt-cloud/webhook:
post:
operationId: webhook
responses:
'200':
description: Ok
content:
application/json:
schema:
properties:
status:
type: string
required:
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Handle dbt Cloud webhook for job completion
summary: Handle dbt Cloud webhook
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnyType'
/api/v1/projects/{projectUuid}/refresh:
post:
operationId: refresh
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiRefreshResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Refresh a project by recompiling dbt
summary: Refresh project
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/pre-aggregates/refresh:
post:
operationId: refreshProjectPreAggregates
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess__jobIds-string-Array__'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Refresh all pre-aggregates in a project
summary: Refresh project pre-aggregates
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/pre-aggregates/definitions/{preAggregateDefinitionName}/refresh:
post:
operationId: refreshProjectPreAggregateByDefinitionName
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess__jobIds-string-Array__'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Refresh a single pre-aggregate by its definition name
summary: Refresh pre-aggregate by definition name
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: preAggregateDefinitionName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/content-verification:
get:
operationId: listVerifiedContent
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiVerifiedContentListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all verified content (charts and dashboards) in a project
summary: List verified content
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/compile-logs:
get:
operationId: getProjectCompileLogs
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectCompileLogsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get compilation logs for a project
summary: Get project compilation logs
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: number of page
in: query
name: page
required: false
schema:
format: double
type: number
- description: column to sort by
in: query
name: sortBy
required: false
schema:
type: string
enum:
- created_at
- compilation_source
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: filter by triggered user UUIDs (comma-separated)
in: query
name: triggeredByUserUuids
required: false
schema:
type: string
- description: filter by source ("cli_deploy", "refresh_dbt")
in: query
name: source
required: false
schema:
type: string
enum:
- cli_deploy
- refresh_dbt
- create_project
/api/v1/projects/{projectUuid}/compile-logs/job/{jobUuid}:
get:
operationId: getProjectCompileLogByJob
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectCompileLogResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get compilation log by job UUID
summary: Get compilation log for a specific job
tags:
- Projects
security: []
parameters:
- description: The uuid of the project
in: path
name: projectUuid
required: true
schema:
type: string
- description: The uuid of the job
in: path
name: jobUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/pinned-lists/{pinnedListUuid}/items:
get:
operationId: getPinnedItems
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPinnedItems'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get pinned items
summary: Get pinned items
tags:
- Content
security: []
parameters:
- description: project uuid
in: path
name: projectUuid
required: true
schema:
type: string
- description: the list uuid for the pinned items
in: path
name: pinnedListUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/pinned-lists/{pinnedListUuid}/items/order:
patch:
operationId: updatePinnedItemsOrder
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPinnedItems'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update pinned items order
summary: Update pinned items order
tags:
- Content
security: []
parameters:
- description: project uuid
in: path
name: projectUuid
required: true
schema:
type: string
- description: the list uuid for the pinned items
in: path
name: pinnedListUuid
required: true
schema:
type: string
requestBody:
description: the new order of the pinned items
required: true
content:
application/json:
schema:
items:
$ref: '#/components/schemas/UpdatePinnedItemOrder'
type: array
description: the new order of the pinned items
/api/v1/org/settings:
get:
operationId: GetOrganizationSettings
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Returns the current organization''s settings. Defaults are returned
when
no settings have been saved.'
summary: Get organization settings
tags:
- Organizations
security: []
parameters: []
patch:
operationId: UpdateOrganizationSettings
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Updates the current organization''s settings. Only the provided
fields
are changed.'
summary: Update organization settings
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrganizationSettings'
/api/v1/org/designs:
get:
operationId: ListOrganizationDesigns
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all organization design assets.
summary: List organization designs
tags:
- Organizations
security: []
parameters: []
post:
operationId: CreateOrganizationDesign
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new organization design. Starts empty — upload files separately.
summary: Create organization design
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrganizationDesignRequest'
/api/v1/org/designs/{designUuid}:
get:
operationId: GetOrganizationDesign
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a single organization design with its files.
summary: Get organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
patch:
operationId: UpdateOrganizationDesign
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update an organization design's name or description.
summary: Update organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrganizationDesignRequest'
delete:
operationId: DeleteOrganizationDesign
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 an organization design and all its files (cascades S3).
summary: Delete organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
/api/v1/org/designs/default:
delete:
operationId: ClearDefaultOrganizationDesign
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Clear whichever design is currently the organization default.
Idempotent
— succeeds when no default is set.
NOTE: This literal `/default` route MUST stay registered before
`Delete(''/{designUuid}'')` below so Express routes a request to
`DELETE /api/v1/org/designs/default` here rather than treating
"default" as a `designUuid` path param.'
summary: Clear default organization design
tags:
- Organizations
security: []
parameters: []
/api/v1/org/designs/{designUuid}/default:
post:
operationId: SetDefaultOrganizationDesign
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Mark this design as the organization's default. Clears any previous
default.
summary: Set default organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
/api/v1/org/designs/{designUuid}/files:
post:
operationId: UploadOrganizationDesignFile
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationDesignFileResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Upload a file into a design. Send raw bytes as the body with the
appropriate Content-Type and Content-Length headers. Pass `kind`
and `filename` as query parameters. Mirrors the data-app image
upload pattern — no multipart wrapping required.'
summary: Upload file to organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
- in: query
name: kind
required: true
schema:
type: string
- in: query
name: filename
required: true
schema:
type: string
/api/v1/org/designs/{designUuid}/files/{fileUuid}:
delete:
operationId: DeleteOrganizationDesignFile
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 a single file from an organization design.
summary: Delete file from organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
- in: path
name: fileUuid
required: true
schema:
type: string
get:
operationId: DownloadOrganizationDesignFile
responses:
'200':
description: Success
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Download a single file from an organization design. Streams the
S3 object body back with the stored Content-Type and a sensible
Content-Disposition.'
summary: Download file from organization design
tags:
- Organizations
security: []
parameters:
- in: path
name: designUuid
required: true
schema:
type: string
- in: path
name: fileUuid
required: true
schema:
type: string
/api/v1/org:
get:
operationId: GetMyOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganization'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the current user's organization
summary: Get current organization
tags:
- Organizations
security: []
parameters: []
put:
operationId: CreateOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Creates a new organization, the current user becomes the Admin
of the new organization.
This is only available to users that are not already in an organization.'
summary: Create organization
tags:
- Organizations
security: []
parameters: []
requestBody:
description: the new organization settings
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrganization'
description: the new organization settings
patch:
operationId: UpdateMyOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update the current user's organization
summary: Update current organization
tags:
- Organizations
security: []
parameters: []
requestBody:
description: the new organization settings
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrganization'
description: the new organization settings
/api/v1/org/{organizationUuid}:
delete:
operationId: DeleteMyOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Deletes an organization and all users inside that organization
summary: Delete organization
tags:
- Organizations
security: []
parameters:
- description: the uuid of the organization to delete
in: path
name: organizationUuid
required: true
schema:
type: string
/api/v1/org/projects:
get:
operationId: ListOrganizationProjects
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationProjects'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets all projects of the current user's organization
summary: List organization projects
tags:
- Organizations
security: []
parameters: []
post:
operationId: CreateProject
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiCreateProjectResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new project in the organization
summary: Create project
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectOptionalCredentials'
/api/v1/org/users:
get:
operationId: ListOrganizationMembers
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationMemberProfiles'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets all the members of the current user's organization
summary: List organization members
tags:
- Organizations
security: []
parameters:
- in: query
name: includeGroups
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: searchQuery
required: false
schema:
type: string
- description: filter users who can view this project
in: query
name: projectUuid
required: false
schema:
type: string
- in: query
name: googleOidcOnly
required: false
schema:
type: boolean
/api/v1/org/users/{userUuid}:
get:
operationId: GetOrganizationMemberByUuid
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationMemberProfile'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the member profile for a user in the current user's organization
by uuid
summary: Get organization member by UUID
tags:
- Organizations
deprecated: true
security: []
parameters:
- description: the uuid of the user
in: path
name: userUuid
required: true
schema:
$ref: '#/components/schemas/UUID'
patch:
operationId: UpdateOrganizationMember
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationMemberProfile'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Updates the membership profile for a user in the current user's
organization
summary: Update organization member
tags:
- Roles & Permissions
- Organizations
deprecated: true
security: []
parameters:
- description: the uuid of the user to update
in: path
name: userUuid
required: true
schema:
type: string
requestBody:
description: the new membership profile
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationMemberProfileUpdate'
description: the new membership profile
/api/v1/org/users/email/{email}:
get:
operationId: GetOrganizationMemberByEmail
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationMemberProfile'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the member profile for a user in the current user's organization
by email
summary: Get organization member by email
tags:
- Organizations
deprecated: true
security: []
parameters:
- description: the email of the user
in: path
name: email
required: true
schema:
type: string
/api/v1/org/user/{userUuid}:
delete:
operationId: DeleteOrganizationMember
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Deletes a user from the current user's organization
summary: Delete organization member
tags:
- Organizations
security: []
parameters:
- description: the uuid of the user to delete
in: path
name: userUuid
required: true
schema:
type: string
/api/v1/org/user/{userUuid}/schedulers-summary:
get:
operationId: GetUserSchedulersSummary
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserSchedulersSummaryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets a summary of scheduled deliveries owned by a user across all
projects
summary: Get user schedulers
tags:
- Organizations
security: []
parameters:
- description: the uuid of the user
in: path
name: userUuid
required: true
schema:
type: string
/api/v1/org/user/{userUuid}/reassign-schedulers:
patch:
operationId: ReassignUserSchedulers
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiReassignUserSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Reassigns all scheduled deliveries from one user to another
summary: Reassign schedulers
tags:
- Organizations
security: []
parameters:
- description: the uuid of the user whose schedulers will be reassigned
in: path
name: userUuid
required: true
schema:
type: string
requestBody:
description: the new owner details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReassignUserSchedulersRequest'
description: the new owner details
/api/v1/org/allowedEmailDomains:
get:
operationId: ListOrganizationEmailDomains
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationAllowedEmailDomains'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets the allowed email domains for the current user's organization
summary: List allowed email domains
tags:
- Organizations
security: []
parameters: []
patch:
operationId: UpdateOrganizationEmailDomains
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiOrganizationAllowedEmailDomains'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Updates the allowed email domains for the current user's organization
summary: Update allowed email domains
tags:
- Organizations
security: []
parameters: []
requestBody:
description: the new allowed email domains
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAllowedEmailDomains'
description: the new allowed email domains
/api/v1/org/groups:
post:
operationId: CreateGroupInOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateGroupResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Creates a new group in the current user's organization
summary: Create group
tags:
- Organizations
security: []
parameters: []
requestBody:
description: the new group details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGroup'
description: the new group details
get:
operationId: ListGroupsInOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGroupListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets all the groups in the current user's organization
summary: List organization groups
tags:
- Organizations
security: []
parameters:
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: number of members to include
in: query
name: includeMembers
required: false
schema:
format: double
type: number
- in: query
name: searchQuery
required: false
schema:
type: string
/api/v1/org/color-palettes:
post:
operationId: CreateColorPalette
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreatedColorPaletteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new color palette
summary: Create color palette
tags:
- Organizations
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateColorPalette'
get:
operationId: ListColorPalettes
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiColorPalettesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List all color palettes in the organization
summary: List color palettes
tags:
- Organizations
security: []
parameters: []
/api/v1/org/color-palettes/{colorPaletteUuid}:
patch:
operationId: UpdateColorPalette
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiColorPaletteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a color palette
summary: Update color palette
tags:
- Organizations
security: []
parameters:
- in: path
name: colorPaletteUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateColorPalette'
delete:
operationId: DeleteColorPalette
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a color palette
summary: Delete color palette
tags:
- Organizations
security: []
parameters:
- in: path
name: colorPaletteUuid
required: true
schema:
type: string
/api/v1/org/color-palettes/{colorPaletteUuid}/active:
post:
operationId: SetActiveColorPalette
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiColorPaletteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Set a color palette as the active palette
summary: Set active color palette
tags:
- Organizations
security: []
parameters:
- in: path
name: colorPaletteUuid
required: true
schema:
type: string
/api/v1/org/impersonation:
get:
operationId: GetImpersonationSettings
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiImpersonationOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the impersonation setting for the current organization
summary: Get impersonation settings
tags:
- Organizations
security: []
parameters: []
patch:
operationId: UpdateImpersonationSettings
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiImpersonationOrganizationSettingsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update the impersonation setting for the current organization
summary: Update impersonation settings
tags:
- Organizations
security: []
parameters: []
requestBody:
description: the new impersonation settings
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateImpersonationOrganizationSettings'
description: the new impersonation settings
/api/v1/notifications:
get:
operationId: getNotifications
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetNotifications'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets notifications for a user based on the type
summary: Get notifications
tags:
- Notifications
security: []
parameters:
- in: query
name: type
required: true
schema:
$ref: '#/components/schemas/ApiNotificationResourceType'
/api/v1/notifications/{notificationId}:
patch:
operationId: updateNotification
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update notification
summary: Update notification
tags:
- Notifications
security: []
parameters:
- description: the id of the notification
in: path
name: notificationId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiNotificationUpdateParams'
/api/v1/projects/{projectUuid}/metricsExplorer/{explore}/{metric}/runMetricTotal:
post:
operationId: runMetricTotal
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiMetricsExplorerTotalResults'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Run a metric total query with comparison
summary: Run metric total query
tags:
- Metrics Explorer
- Metrics
- Explorer
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: explore
required: true
schema:
type: string
- in: path
name: metric
required: true
schema:
type: string
- in: query
name: timeFrame
required: true
schema:
$ref: '#/components/schemas/TimeFrames'
- in: query
name: granularity
required: true
schema:
$ref: '#/components/schemas/TimeFrames'
- in: query
name: startDate
required: true
schema:
type: string
- in: query
name: endDate
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
properties:
rollingDays:
type: number
format: double
comparisonType:
$ref: '#/components/schemas/MetricTotalComparisonType'
type: object
/api/v1/projects/{projectUuid}/metricsExplorer/{explore}/{metric}/compileMetricTotalQuery:
post:
operationId: compileMetricTotalQuery
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCompiledQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Compile the metric total query SQL
summary: Compile metric total query
tags:
- Metrics Explorer
- Metrics
- Explorer
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: explore
required: true
schema:
type: string
- in: path
name: metric
required: true
schema:
type: string
- in: query
name: timeFrame
required: true
schema:
$ref: '#/components/schemas/TimeFrames'
- in: query
name: granularity
required: true
schema:
$ref: '#/components/schemas/TimeFrames'
- in: query
name: startDate
required: true
schema:
type: string
- in: query
name: endDate
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
properties:
rollingDays:
type: number
format: double
comparisonType:
$ref: '#/components/schemas/MetricTotalComparisonType'
type: object
/api/v1/impersonation/start:
post:
operationId: StartImpersonation
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiStartImpersonationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Start impersonating a user
summary: Start impersonation
tags:
- Impersonation
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiStartImpersonationRequest'
/api/v1/impersonation/stop:
post:
operationId: StopImpersonation
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiStopImpersonationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Stop impersonating a user
summary: Stop impersonation
tags:
- Impersonation
security: []
parameters: []
/api/v1/groups/{groupUuid}:
get:
operationId: getGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGroupResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get group details
summary: Get group
tags:
- User Groups
security: []
parameters:
- description: unique id of the group
in: path
name: groupUuid
required: true
schema:
type: string
- description: number of members to include
in: query
name: includeMembers
required: false
schema:
format: double
type: number
- description: offset of members to include
in: query
name: offset
required: false
schema:
format: double
type: number
delete:
operationId: deleteGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a group
summary: Delete group
tags:
- User Groups
security: []
parameters:
- in: path
name: groupUuid
required: true
schema:
type: string
patch:
operationId: updateGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGroupResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a group
summary: Update group
tags:
- User Groups
security: []
parameters:
- in: path
name: groupUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateGroupWithMembers'
/api/v1/groups/{groupUuid}/members/{userUuid}:
put:
operationId: addUserToGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Add a Lightdash user to a group
summary: Add user to group
tags:
- User Groups
deprecated: true
security: []
parameters:
- description: the UUID for the group to add the user to
in: path
name: groupUuid
required: true
schema:
type: string
- description: the UUID for the user to add to the group
in: path
name: userUuid
required: true
schema:
type: string
delete:
operationId: removeUserFromGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a user from a group
summary: Remove user from group
tags:
- User Groups
deprecated: true
security: []
parameters:
- description: the UUID for the group to remove the user from
in: path
name: groupUuid
required: true
schema:
type: string
- description: the UUID for the user to remove from the group
in: path
name: userUuid
required: true
schema:
type: string
/api/v1/groups/{groupUuid}/members:
get:
operationId: getGroupMembers
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGroupMembersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: View members of a group
summary: Get group members
tags:
- User Groups
deprecated: true
security: []
parameters:
- description: the UUID for the group to view the members of
in: path
name: groupUuid
required: true
schema:
type: string
/api/v1/groups/{groupUuid}/projects/{projectUuid}:
post:
operationId: addProjectAccessToGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateProjectGroupAccess'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Add project access to a group
summary: Add project access to group
tags:
- User Groups
deprecated: true
security: []
parameters:
- in: path
name: groupUuid
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pick_CreateProjectGroupAccess.role_'
patch:
operationId: updateProjectAccessForGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateProjectGroupAccess'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update project access for a group
summary: Update project access for group
tags:
- User Groups
deprecated: true
security: []
parameters:
- in: path
name: groupUuid
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDBProjectGroupAccess'
delete:
operationId: removeProjectAccessFromGroup
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove project access from a group
summary: Remove project access from group
tags:
- User Groups
deprecated: true
security: []
parameters:
- in: path
name: groupUuid
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
/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'
/api/v1/gitlab/install:
get:
operationId: installGitlabIntegration
responses:
'302':
description: Redirect to GitLab OAuth
description: Initiate GitLab OAuth integration
summary: Install GitLab integration
security: []
parameters:
- description: Custom GitLab instance URL (optional, defaults to gitlab.com)
in: query
name: gitlab_instance_url
required: false
schema:
type: string
/api/v1/gitlab/oauth/callback:
get:
operationId: gitlabOauthCallback
responses:
'204':
description: No content
description: GitLab OAuth callback handler
summary: GitLab OAuth callback
security: []
parameters:
- description: Authorization code from GitLab
in: query
name: code
required: false
schema:
type: string
- description: OAuth state parameter for CSRF protection
in: query
name: state
required: false
schema:
type: string
- description: GitLab instance URL (for self-hosted instances)
in: query
name: gitlab_instance_url
required: false
schema:
type: string
/api/v1/gitlab/uninstall:
delete:
operationId: uninstallGitlabIntegration
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
description: Uninstall GitLab integration from the organization
summary: Uninstall GitLab integration
security: []
parameters: []
/api/v1/gitlab/repos/list:
get:
operationId: getGitlabProjects
responses:
'200':
description: ''
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/GitRepo'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: List GitLab projects accessible via the integration
summary: List GitLab projects
security: []
parameters: []
/api/v1/github/install:
get:
operationId: installGithubAppForOrganization
responses:
'302':
description: Not found
description: Install the Lightdash GitHub App and link to an organization
summary: Install GitHub App
security: []
parameters: []
/api/v1/github/user/authorize:
get:
operationId: authorizeGithubUser
responses:
'302':
description: Redirect to GitHub
description: 'Link the authenticated user''s personal GitHub account so write-backs
can be authored as them instead of the Lightdash GitHub App'
summary: Link GitHub account
security: []
parameters:
- description: Optional path to return to after authorization
in: query
name: redirect
required: false
schema:
type: string
/api/v1/github/user:
get:
operationId: getGithubUserCredential
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGithubUserCredentialResponse'
description: Get the authenticated user's linked GitHub account, if any
summary: Get linked GitHub account
security: []
parameters: []
delete:
operationId: unlinkGithubUser
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
description: Unlink the authenticated user's GitHub account and revoke its token
summary: Unlink GitHub account
security: []
parameters: []
/api/v1/github/config:
get:
operationId: configurationGithubAppForOrganization
responses:
'200':
description: ''
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/GitIntegrationConfiguration'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: Get GitHub App configuration for the organization
summary: Get GitHub App configuration
security: []
parameters: []
/api/v1/github/oauth/callback:
get:
operationId: githubOauthCallback
responses:
'204':
description: No content
description: Callback URL for GitHub App Authorization also used for GitHub
App Installation with combined Authorization
summary: GitHub OAuth callback
security: []
parameters:
- description: authorization code from GitHub
in: query
name: code
required: false
schema:
type: string
- description: oauth state parameter
in: query
name: state
required: false
schema:
type: string
- description: installation id from GitHub
in: query
name: installation_id
required: false
schema:
type: string
- description: setup action from GitHub
in: query
name: setup_action
required: false
schema:
type: string
/api/v1/github/uninstall:
delete:
operationId: uninstallGithubAppForOrganization
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
description: Uninstall the GitHub App from the organization
summary: Uninstall GitHub App
security: []
parameters: []
/api/v1/github/repos/list:
get:
operationId: getGithubListRepositories
responses:
'200':
description: ''
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/GitRepo'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: List GitHub repositories accessible via the installed app
summary: List GitHub repositories
security: []
parameters: []
/api/v1/github/repos:
post:
operationId: createGithubRepository
responses:
'201':
description: Created
content:
application/json:
schema:
properties:
results:
properties:
defaultBranch:
type: string
fullName:
type: string
repo:
type: string
owner:
type: string
required:
- defaultBranch
- fullName
- repo
- owner
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
description: Create a new GitHub repository via the installed app
summary: Create GitHub repository
security: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
properties:
isPrivate:
type: boolean
description:
type: string
name:
type: string
required:
- name
type: object
/api/v1/projects/{projectUuid}/git-integration/pull-requests/custom-metrics:
post:
operationId: CreatePullRequestForCustomMetrics
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/PullRequestCreated'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a pull request for custom metrics
summary: Create PR for custom metrics
tags:
- Git Integration
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
quoteChar:
type: string
enum:
- '"'
- ''''
customMetrics:
items:
$ref: '#/components/schemas/AdditionalMetric'
type: array
required:
- customMetrics
type: object
/api/v1/projects/{projectUuid}/git-integration/pull-requests/custom-dimensions:
post:
operationId: CreatePullRequestForCustomDimensions
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/PullRequestCreated'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a pull request for custom dimensions
summary: Create PR for custom dimensions
tags:
- Git Integration
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
quoteChar:
type: string
enum:
- '"'
- ''''
customDimensions:
items:
$ref: '#/components/schemas/CustomDimension'
type: array
required:
- customDimensions
type: object
/api/v1/projects/{projectUuid}/git-integration/explores/{exploreName}/files:
get:
operationId: GetGitFileForExplore
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiGitFileContent'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the YAML file for an explore's base table
summary: Get explore file
tags:
- Git Integration
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: exploreName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/git-integration/explores/{exploreName}/file-path:
get:
operationId: GetGitFilePathForExplore
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
properties:
filePath:
type: string
required:
- filePath
type: object
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the file path for an explore's YAML file (without fetching
content)
summary: Get explore file path
tags:
- Git Integration
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: exploreName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/git-integration/pull-requests/file-change:
post:
operationId: CreatePullRequestForFileChange
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/PullRequestCreated'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a pull request with arbitrary file changes
summary: Create file PR
tags:
- Git Integration
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
description:
type: string
title:
type: string
originalSha:
type: string
content:
type: string
filePath:
type: string
required:
- description
- title
- originalSha
- content
- filePath
type: object
/api/v1/projects/{projectUuid}/git/branches:
get:
operationId: listGitBranches
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitBranchesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List branches for the connected repository
summary: List branches
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: createGitBranch
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitBranchCreatedResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new branch from a source branch
summary: Create branch
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGitBranchRequest'
/api/v1/projects/{projectUuid}/git/branches/{branch}/files:
get:
operationId: getGitFileOrDirectory
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitFileOrDirectoryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get file content or directory listing. Returns directory entries
if path is a directory, file content if path is a file.
summary: Get file or directory
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
- in: query
name: path
required: false
schema:
type: string
put:
operationId: saveGitFile
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitFileSavedResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create or update a file. Provide sha to update existing file, omit
for new file.
summary: Save file
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
message:
type: string
sha:
type: string
content:
type: string
path:
type: string
required:
- content
- path
type: object
delete:
operationId: deleteGitFile
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitFileDeletedResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete a file from the repository
summary: Delete file
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
message:
type: string
sha:
type: string
path:
type: string
required:
- sha
- path
type: object
/api/v1/projects/{projectUuid}/git/branches/{branch}/pull-request:
post:
operationId: createGitPullRequest
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGitPullRequestCreatedResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a pull request from a branch to the default branch
summary: Create pull request
tags:
- Git Files
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGitPullRequestRequest'
/api/v1/geojson-proxy:
get:
operationId: getGeoJson
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Record_string.unknown_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Proxies external GeoJSON files to bypass CORS restrictions
summary: Proxy GeoJSON
tags:
- Map
security: []
parameters:
- description: the URL of the GeoJSON file
in: query
name: url
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/funnel/event-names:
get:
operationId: GetFunnelEventNames
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFunnelEventNamesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get distinct event names from a dimension for funnel step selection.
Scans the last 30 days of data to limit query cost.'
summary: Get event names
tags:
- Funnel
security: []
parameters:
- description: The project UUID
in: path
name: projectUuid
required: true
schema:
type: string
- description: The explore to query
in: query
name: exploreName
required: true
schema:
type: string
- description: The dimension containing event names
in: query
name: eventDimensionId
required: true
schema:
type: string
- description: The timestamp dimension used to filter to last 30 days
in: query
name: timestampFieldId
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/funnel/query:
post:
operationId: RunFunnelQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFunnelQueryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Execute a funnel analysis query and return conversion metrics
summary: Run funnel query
tags:
- Funnel
security: []
parameters:
- description: The project UUID
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: The funnel query configuration
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FunnelQueryRequest'
description: The funnel query configuration
/api/v1/file/{fileId}:
get:
operationId: getFile
responses:
'204':
description: No content
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: 'Get a persistent file download. Streams the file body through
the
backend so self-hosted deployments don''t need to expose their internal
S3-compatible storage endpoint to browsers.'
summary: Get file
tags:
- Files
security: []
parameters:
- description: the persistent file nanoid
in: path
name: fileId
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/favorites:
get:
operationId: getFavorites
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFavoriteItems'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the current user's favorite items in a project
summary: Get favorites
tags:
- Content
security: []
parameters:
- description: project uuid
in: path
name: projectUuid
required: true
schema:
type: string
patch:
operationId: toggleFavorite
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiToggleFavorite'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Toggle a favorite item for the current user
summary: Toggle favorite
tags:
- Content
security: []
parameters:
- description: project uuid
in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
description: the content type and uuid to toggle
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ToggleFavoriteRequest'
description: the content type and uuid to toggle
/api/v1/projects/{projectUuid}/explores:
put:
operationId: SetExplores
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSetExploresResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Set explores for a project
summary: Set explores
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AnyType'
type: array
get:
operationId: GetExplores
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiExploresResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all explores for a project
summary: List explores
tags:
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/explores/{exploreId}:
get:
operationId: GetExplore
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiExploreResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a specific explore
summary: Get explore
tags:
- Projects
security: []
parameters:
- in: path
name: exploreId
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/explores/{exploreId}/compileQuery:
post:
operationId: CompileQuery
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCompiledQueryResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Compile a metric query for an explore
summary: Compile query
tags:
- Projects
security: []
parameters:
- in: path
name: exploreId
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/MetricQuery'
- properties:
usePreAggregateCache:
type: boolean
pivotConfiguration:
$ref: '#/components/schemas/PivotConfiguration'
parameters:
$ref: '#/components/schemas/ParametersValuesMap'
type: object
/api/v1/projects/{projectUuid}/explores/{exploreId}/preAggregateCheck:
post:
operationId: CheckPreAggregate
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPreAggregateCheckResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Check pre-aggregate availability for a metric query
summary: Check pre-aggregate
tags:
- Projects
security: []
parameters:
- in: path
name: exploreId
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/MetricQuery'
- properties:
usePreAggregateCache:
type: boolean
type: object
/api/v1/projects/{projectUuid}/explores/{exploreId}/validateFormula:
post:
operationId: ValidateFormula
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiFormulaValidationResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Validate a spreadsheet formula against the explore's fields
summary: Validate formula
tags:
- Projects
security: []
parameters:
- in: path
name: exploreId
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
metricQuery:
$ref: '#/components/schemas/MetricQuery'
formula:
type: string
required:
- metricQuery
- formula
type: object
/api/v1/projects/{projectUuid}/explores/{exploreId}/charts:
get:
operationId: GetChartsByExploreName
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChartSummaryListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List charts referencing a given explore
summary: List charts by explore
tags:
- Projects
security: []
parameters:
- in: path
name: exploreId
required: true
schema:
type: string
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/promote:
post:
operationId: promoteDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPromoteDashboardResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Promote dashboard to its upstream project
summary: Promote dashboard
tags:
- Dashboards
security: []
parameters:
- description: dashboardUuid for the dashboard to run
in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/promoteDiff:
get:
operationId: promoteDashboardDiff
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPromotionChangesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get diff from dashboard to promote
summary: Get dashboard promotion diff
tags:
- Dashboards
security: []
parameters:
- description: dashboardUuid for the dashboard to check diff
in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/history:
get:
operationId: getDashboardHistory
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetDashboardHistoryResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get dashboard version history
summary: Get dashboard history
tags:
- Dashboards
security: []
parameters:
- description: dashboardUuid for the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/version/{versionUuid}:
get:
operationId: getDashboardVersion
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetDashboardVersionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get specific dashboard version
summary: Get dashboard version
tags:
- Dashboards
security: []
parameters:
- description: dashboardUuid for the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: versionUuid for the dashboard version
in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/rollback/{versionUuid}:
post:
operationId: postDashboardVersionRollback
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Rollback dashboard to a previous version
summary: Rollback dashboard version
tags:
- Dashboards
security: []
parameters:
- description: dashboardUuid for the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: versionUuid for the dashboard version to rollback to
in: path
name: versionUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/schedulers:
get:
operationId: getDashboardSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get schedulers for a dashboard
summary: List dashboard schedulers
tags:
- Dashboards
deprecated: true
security: []
parameters:
- in: path
name: dashboardUuid
required: true
schema:
type: string
post:
operationId: createDashboardScheduler
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateDashboardSchedulerResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a scheduler for a dashboard
summary: Create dashboard scheduler
tags:
- Dashboards
security: []
parameters:
- in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/dashboards/{dashboardUuid}/verification:
post:
operationId: verifyDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentVerificationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Verify a dashboard
summary: Verify dashboard
tags:
- Dashboards
security: []
parameters:
- description: The uuid of the dashboard to verify
in: path
name: dashboardUuid
required: true
schema:
type: string
delete:
operationId: unverifyDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentVerificationDeleteResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove verification from a dashboard
summary: Unverify dashboard
tags:
- Dashboards
security: []
parameters:
- description: The uuid of the dashboard to unverify
in: path
name: dashboardUuid
required: true
schema:
type: string
/api/v1/csv/{jobId}:
get:
operationId: getGsheetExportStatus
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCsvUrlResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the status/URL of a Google Sheets export job
summary: Get export status
tags:
- Exports
security: []
parameters:
- description: the jobId for the export
in: path
name: jobId
required: true
schema:
type: string
/api/v1/comments/dashboards/{dashboardUuid}/{dashboardTileUuid}:
post:
operationId: createComment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateComment'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Creates a comment on a dashboard tile
summary: Create comment
tags:
- Comments
security: []
parameters:
- description: the uuid of the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: the uuid of the dashboard tile
in: path
name: dashboardTileUuid
required: true
schema:
type: string
requestBody:
description: the comment to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pick_Comment.text-or-replyTo-or-mentions-or-textHtml_'
description: the comment to create
/api/v1/comments/dashboards/{dashboardUuidOrSlug}:
get:
operationId: getComments
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetComments'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets all comments for a dashboard
summary: Get comments
tags:
- Comments
security: []
parameters:
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
- in: query
name: resolved
required: false
schema:
type: boolean
/api/v1/comments/dashboards/{dashboardUuid}/{commentId}:
patch:
operationId: resolveComment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResolveComment'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Resolves or unresolves a comment on a dashboard
summary: Resolve comment
tags:
- Comments
security: []
parameters:
- description: the uuid of the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: the uuid of the comment
in: path
name: commentId
required: true
schema:
type: string
requestBody:
description: whether the comment should be resolved
required: true
content:
application/json:
schema:
properties:
resolved:
type: boolean
required:
- resolved
type: object
description: whether the comment should be resolved
delete:
operationId: deleteComment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResolveComment'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Deletes a comment on a dashboard
summary: Delete comment
tags:
- Comments
security: []
parameters:
- description: the uuid of the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: the uuid of the comment
in: path
name: commentId
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog:
get:
operationId: getCatalog
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCatalogResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get catalog items
summary: Get catalog
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: search
required: false
schema:
type: string
- in: query
name: type
required: false
schema:
$ref: '#/components/schemas/CatalogType'
- in: query
name: filter
required: false
schema:
$ref: '#/components/schemas/CatalogFilter'
/api/v1/projects/{projectUuid}/dataCatalog/metrics/trees:
get:
operationId: getMetricsTrees
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricsTreesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List saved metrics trees for a project
summary: List metrics trees
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: Page number (1-indexed)
in: query
name: page
required: false
schema:
format: double
type: number
- description: Number of trees per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
post:
operationId: createMetricsTree
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateMetricsTreeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create a new saved metrics tree with nodes and edges
summary: Create metrics tree
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateMetricsTreePayload'
/api/v1/projects/{projectUuid}/dataCatalog/metrics/trees/{metricsTreeUuidOrSlug}:
get:
operationId: getMetricsTreeDetails
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricsTreeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get details of a saved metrics tree including nodes and edges
summary: Get metrics tree details
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuidOrSlug
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/trees/{metricsTreeUuid}:
patch:
operationId: updateMetricsTree
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateMetricsTreeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a saved metrics tree including nodes and edges
summary: Update metrics tree
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuid
required: true
schema:
type: string
requestBody:
description: Updated tree data including nodes and edges
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateMetricsTreePayload'
description: Updated tree data including nodes and edges
delete:
operationId: deleteMetricsTree
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 a saved metrics tree and its associated nodes
summary: Delete metrics tree
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/trees/{metricsTreeUuid}/lock:
post:
operationId: acquireMetricsTreeLock
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiMetricsTreeLockResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Acquire an edit lock on a metrics tree
summary: Acquire tree lock
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuid
required: true
schema:
type: string
delete:
operationId: releaseMetricsTreeLock
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Release an edit lock on a metrics tree
summary: Release tree lock
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/trees/{metricsTreeUuid}/lock/heartbeat:
put:
operationId: refreshMetricsTreeLockHeartbeat
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Refresh the heartbeat on an edit lock to keep it alive
summary: Refresh tree lock heartbeat
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: metricsTreeUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{table}/metadata:
get:
operationId: getMetadata
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCatalogMetadataResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get catalog metadata for tables
summary: Get table metadata
tags:
- Catalog
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: Table name to get metadata for
in: path
name: table
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{table}/analytics:
get:
operationId: getAnalytics
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCatalogAnalyticsResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get catalog analytics for tables
summary: Get table analytics
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: Table name to get analytics for
in: path
name: table
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{table}/analytics/{field}:
get:
operationId: getAnalyticsField
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/ApiCatalogAnalyticsResults'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get catalog analytics for fields
summary: Get field analytics
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: Table where this field belongs
in: path
name: table
required: true
schema:
type: string
- description: Field name to get analytics for
in: path
name: field
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics:
get:
operationId: getMetricsCatalog
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiMetricsCatalog'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get metrics catalog
summary: List metrics in catalog
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: search
required: false
schema:
type: string
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: sort
required: false
schema:
type: string
- in: query
name: order
required: false
schema:
$ref: '#/components/schemas/ApiSortDirection'
- in: query
name: categories
required: false
schema:
type: array
items:
type: string
- in: query
name: categoriesFilterMode
required: false
schema:
$ref: '#/components/schemas/CatalogCategoryFilterMode'
- in: query
name: tables
required: false
schema:
type: array
items:
type: string
- in: query
name: ownerUserUuids
required: false
schema:
type: array
items:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/tree/edges:
get:
operationId: getAllMetricsTreeEdges
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetAllMetricsTreeEdges'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all edges in the metrics tree for a project
summary: Get all metrics tree edges
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
post:
operationId: createMetricsTreeEdge
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create an edge in the metrics tree
summary: Create metrics tree edge
tags:
- Catalog
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiMetricsTreeEdgePayload'
/api/v1/projects/{projectUuid}/dataCatalog/metrics/{tableName}/{metricName}:
get:
operationId: getMetric
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricPeek'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get metric by table and metric name
summary: Get metric
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: tableName
required: true
schema:
type: string
- in: path
name: metricName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics-with-time-dimensions:
get:
operationId: getMetricsWithTimeDimensions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiMetricsWithAssociatedTimeDimensionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get metrics with time dimensions
summary: Get metrics with time dimensions
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: tableName
required: false
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{tableName}/filter-dimensions:
get:
operationId: getFilterDimensions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFilterDimensionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get dimensions that can be used to filter metrics
summary: Get filter dimensions
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: tableName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{tableName}/segment-dimensions:
get:
operationId: getSegmentDimensions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSegmentDimensionsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get dimensions that can be used to segment metrics
summary: Get segment dimensions
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: tableName
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{catalogSearchUuid}/categories:
post:
operationId: addCategoryToCatalogItem
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Add a category to a catalog item
summary: Add category to catalog item
tags:
- Catalog
security: []
parameters:
- in: path
name: catalogSearchUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
tagUuid:
type: string
required:
- tagUuid
type: object
/api/v1/projects/{projectUuid}/dataCatalog/{catalogSearchUuid}/categories/{tagUuid}:
delete:
operationId: removeCategoryFromCatalogItem
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results: {}
status:
type: string
required:
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Remove a category from a catalog item
summary: Remove category from catalog item
tags:
- Catalog
security: []
parameters:
- in: path
name: catalogSearchUuid
required: true
schema:
type: string
- in: path
name: tagUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/{catalogSearchUuid}/icon:
patch:
operationId: updateCatalogItemIcon
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update the icon for a catalog item
summary: Update catalog item icon
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: catalogSearchUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
icon:
allOf:
- $ref: '#/components/schemas/CatalogItemIcon'
nullable: true
required:
- icon
type: object
/api/v1/projects/{projectUuid}/dataCatalog/metrics/tree:
get:
operationId: getMetricsTreeLegacy
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricsTree'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the metrics tree structure (deprecated, use POST instead)
summary: Get metrics tree
tags:
- Catalog
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: metricUuids
required: true
schema:
type: array
items:
type: string
post:
operationId: getMetricsTree
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricsTree'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the metrics tree structure
summary: Get metrics tree
tags:
- Catalog
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetMetricsTreePayload'
/api/v1/projects/{projectUuid}/dataCatalog/metrics/tree/edges/{sourceCatalogSearchUuid}/{targetCatalogSearchUuid}:
delete:
operationId: deleteMetricsTreeEdge
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 an edge from the metrics tree
summary: Delete metrics tree edge
tags:
- Catalog
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: sourceCatalogSearchUuid
required: true
schema:
type: string
- in: path
name: targetCatalogSearchUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/has:
get:
operationId: hasMetricsInCatalog
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
type: boolean
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Check if there are any metrics in catalog
summary: Check if metrics exist in catalog
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/dataCatalog/metrics/owners:
get:
operationId: getMetricOwners
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
items:
$ref: '#/components/schemas/CatalogOwner'
type: array
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get distinct metric owners for filter dropdown
summary: List metric owners
tags:
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/bigquery/sso/datasets:
get:
operationId: GetBigQueryDatasets
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBigqueryDatasets'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get BigQuery datasets for a project
summary: Get BigQuery datasets
tags:
- Projects
security: []
parameters:
- in: query
name: projectId
required: true
schema:
type: string
/api/v1/bigquery/sso/projects:
get:
operationId: GetBigQueryProjects
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBigqueryProjects'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get BigQuery projects accessible by the user
summary: Get BigQuery projects
tags:
- Projects
security: []
parameters: []
/api/v1/bigquery/sso/is-authenticated:
get:
operationId: checkBigqueryAuthentication
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Check if user is authenticated with BigQuery
summary: Check BigQuery authentication
tags:
- Projects
security: []
parameters: []
/api/v2/projects/{projectId}/roles/assignments:
get:
operationId: GetProjectRoleAssignments
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List project role assignments
summary: List project role assignments
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
/api/v2/projects/{projectId}/roles/assignments/user/{userId}:
post:
operationId: UpsertProjectUserRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create or update project role assignment for user (upsert)
summary: Assign project role to user
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
- in: path
name: userId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertUserRoleAssignmentRequest'
delete:
operationId: DeleteProjectUserRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete project role assignment for user
summary: Remove project role from user
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
- in: path
name: userId
required: true
schema:
type: string
/api/v2/projects/{projectId}/roles/assignments/group/{groupId}:
post:
operationId: UpsertProjectGroupRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Create or update project role assignment for group (upsert)
summary: Assign project role to group
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
- in: path
name: groupId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertUserRoleAssignmentRequest'
patch:
operationId: UpdateProjectGroupRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update project role assignment for group
summary: Update project group role
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
- in: path
name: groupId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRoleAssignmentRequest'
delete:
operationId: DeleteProjectGroupRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Delete project role assignment for group
summary: Remove project role from group
tags:
- v2
- Project Roles
security: []
parameters:
- in: path
name: projectId
required: true
schema:
type: string
- in: path
name: groupId
required: true
schema:
type: string
/api/v2/orgs/{orgUuid}/roles/assignments:
get:
operationId: GetOrganizationRoleAssignments
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: List organization role assignments (system roles only)
summary: List organization role assignments
tags:
- v2
- Organization Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
/api/v2/orgs/{orgUuid}/roles/assignments/user/{userId}:
post:
operationId: UpsertOrganizationUserRoleAssignment
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleAssignmentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Assign system role to user at organization level
summary: Assign organization role to user
tags:
- v2
- Organization Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: userId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
properties:
roleId:
type: string
required:
- roleId
type: object
/api/v2/orgs/{orgUuid}/roles/{roleId}/duplicate:
post:
operationId: DuplicateRole
responses:
'201':
description: Role duplicated
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoleWithScopesResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Duplicate a role
summary: Duplicate role
tags:
- v2
- Organization Roles
security: []
parameters:
- in: path
name: orgUuid
required: true
schema:
type: string
- in: path
name: roleId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRole'
/api/v1/projects/{projectUuid}/changesets:
get:
operationId: listActiveChangesetWithChanges
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiChangesetsResponseTSOACompat'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get active changeset for a project
summary: List changesets
tags:
- Changesets
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/changesets/changes/{changeUuid}:
get:
operationId: getChange
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetChangeResponseTSOACompat'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a specific change by UUID
summary: Get change
tags:
- Changesets
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: changeUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/changesets/changes/{changeUuid}/revert:
post:
operationId: revertChange
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRevertChangeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Revert a specific change
summary: Revert change
tags:
- Changesets
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: changeUuid
required: true
schema:
type: string
/api/v1/projects/{projectUuid}/changesets/revert-all:
post:
operationId: revertAllChanges
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRevertChangeResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Revert all changes in the active changeset
summary: Revert all changes
tags:
- Changesets
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/validate:
get:
operationId: ListValidationResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPaginatedValidateResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get paginated validation results for a project with search, filter,
and sort support.
summary: List validation results
tags:
- v2
- Validation
security: []
parameters:
- description: the projectId for the validation
in: path
name: projectUuid
required: true
schema:
type: string
- description: page number (1-indexed)
in: query
name: page
required: false
schema:
default: 1
format: double
type: number
- description: number of results per page
in: query
name: pageSize
required: false
schema:
default: 20
format: double
type: number
- description: search string to filter by name or error message
in: query
name: searchQuery
required: false
schema:
type: string
- description: field to sort by
in: query
name: sortBy
required: false
schema:
type: string
enum:
- name
- createdAt
- errorType
- source
- description: sort direction
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: comma-separated list of source types to filter by
in: query
name: sourceTypes
required: false
schema:
type: string
- description: comma-separated list of error types to filter by
in: query
name: errorTypes
required: false
schema:
type: string
- description: whether to include chart configuration warnings
in: query
name: includeChartConfigWarnings
required: false
schema:
type: boolean
- description: boolean for analytics tracking
in: query
name: fromSettings
required: false
schema:
type: boolean
/api/v2/projects/{projectUuid}/validate/{validationIdOrUuid}:
get:
operationId: GetValidationResult
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSingleValidationResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a single validation result.
summary: Get validation result
tags:
- v2
- Validation
security: []
parameters:
- description: the projectId for the validation
in: path
name: projectUuid
required: true
schema:
type: string
- description: 'the validation UUID, or a legacy integer id
for rows created before the UUID migration (PROD-7386).'
in: path
name: validationIdOrUuid
required: true
schema: {}
/api/v2/saved/{chartUuid}/schedulers:
get:
operationId: getSavedChartSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSavedChartPaginatedSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all schedulers for a saved chart
summary: List chart schedulers
tags:
- v2
- Charts
security: []
parameters:
- description: The uuid of the chart
in: path
name: chartUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: filter schedulers by name
in: query
name: searchQuery
required: false
schema:
type: string
- description: comma-separated list of scheduler formats to include
in: query
name: formats
required: false
schema:
type: string
- description: include the most recent run for each scheduler
in: query
name: includeLatestRun
required: false
schema:
type: boolean
/api/v2/saved/{chartUuid}/schedulers/{schedulerUuid}/runs:
get:
operationId: getSavedChartSchedulerRuns
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerRunsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the run history of a single scheduler on a chart
summary: List chart scheduler runs
tags:
- v2
- Charts
security: []
parameters:
- description: The uuid of the chart
in: path
name: chartUuid
required: true
schema:
type: string
- description: The uuid of the scheduler
in: path
name: schedulerUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: filter runs by scheduler name
in: query
name: searchQuery
required: false
schema:
type: string
- description: column to sort by (scheduledTime, createdAt)
in: query
name: sortBy
required: false
schema:
type: string
enum:
- scheduledTime
- createdAt
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: comma-separated list of run statuses to include
in: query
name: statuses
required: false
schema:
type: string
- description: comma-separated list of destination types to include
in: query
name: destinations
required: false
schema:
type: string
/api/v2/projects/{projectUuid}/query/{queryUuid}:
get:
operationId: getAsyncQueryResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetAsyncQueryResultsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Retrieves paginated results from a previously executed async query
using its UUID
summary: Get results
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: The UUID of the async query to retrieve results for
in: path
name: queryUuid
required: true
schema:
type: string
- description: Page number for pagination (starts at 1)
in: query
name: page
required: false
schema:
format: double
type: number
- description: 'Number of results per page (default: 500, max: 5000)'
in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v2/projects/{projectUuid}/query/{queryUuid}/cancel:
post:
operationId: cancelAsyncQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Cancels a running async query and discards any partial results
summary: Cancel query
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: The UUID of the async query to cancel
in: path
name: queryUuid
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/query/{queryUuid}/calculate-total:
post:
operationId: executeAsyncCalculateTotal
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Calculates totals for a previously-executed query, referenced by
its queryUuid. Re-runs the source query's MetricQuery against the warehouse
so totals are correct for every metric type (count distinct, average, ratio,
etc.) — unlike client-side cell summation, which only works for sum/count.
The requested `kind` selects which totals to compute.
summary: Calculate totals
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: The UUID of the previously-executed query to compute totals from
in: path
name: queryUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncCalculateTotalRequestParams'
/api/v2/projects/{projectUuid}/query/metric-query:
post:
operationId: executeAsyncMetricQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a metric query asynchronously against your data warehouse
using dimensions, metrics, filters, and sorts
summary: Execute metric query
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncMetricQueryRequestParams'
/api/v2/projects/{projectUuid}/query/field-values:
post:
operationId: executeAsyncFieldValueSearch
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncFieldValueSearchResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Searches for unique field values asynchronously, returning a query
UUID to poll for results
summary: Search field values
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncFieldValueSearchRequestParams'
/api/v2/projects/{projectUuid}/query/chart:
post:
operationId: executeAsyncSavedChartQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a saved chart query asynchronously with optional parameter
overrides
summary: Execute saved chart
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncSavedChartRequestParams'
/api/v2/projects/{projectUuid}/query/dashboard-chart:
post:
operationId: executeAsyncDashboardChartQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncDashboardChartQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a chart within a dashboard context asynchronously with
inherited dashboard filters
summary: Execute dashboard chart
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncDashboardChartRequestParams'
/api/v2/projects/{projectUuid}/query/underlying-data:
post:
operationId: executeAsyncUnderlyingDataQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a query to retrieve underlying raw data for drilling down
into aggregated values
summary: Execute underlying data
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncUnderlyingDataRequestParams'
/api/v2/projects/{projectUuid}/query/sql:
post:
operationId: executeAsyncSqlQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncSqlQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a raw SQL query asynchronously against your data warehouse
for custom queries
summary: Execute SQL query
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncSqlQueryRequestParams'
/api/v2/projects/{projectUuid}/query/sql-chart:
post:
operationId: executeAsyncSqlChartQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncSqlQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a saved SQL chart query asynchronously with optional chart
configurations
summary: Execute SQL chart
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncSqlChartRequestParams'
/api/v2/projects/{projectUuid}/query/dashboard-sql-chart:
post:
operationId: executeAsyncDashboardSqlChartQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncDashboardSqlChartQueryResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Executes a SQL chart within a dashboard context asynchronously
with inherited filters
summary: Execute dashboard SQL chart
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteAsyncDashboardSqlChartRequestParams'
/api/v2/projects/{projectUuid}/query/{queryUuid}/download:
post:
operationId: downloadResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiDownloadAsyncQueryResults-or-ApiDownloadAsyncQueryResultsAsCsv-or-ApiDownloadAsyncQueryResultsAsXlsx_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Downloads query results in various formats with custom formatting
options
summary: Download results
tags:
- v2
- Query
deprecated: true
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: The UUID of the completed async query to download
in: path
name: queryUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Omit_DownloadAsyncQueryResultsRequestParams.queryUuid_'
/api/v2/projects/{projectUuid}/query/{queryUuid}/schedule-download:
post:
operationId: scheduleDownloadResults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobScheduledResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Downloads query results in various formats with custom formatting
options
summary: Download results
tags:
- v2
- Query
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- description: The UUID of the completed async query to download
in: path
name: queryUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Omit_DownloadAsyncQueryResultsRequestParams.queryUuid_'
/api/v2/projects/{projectUuid}/saved/{chartUuidOrSlug}:
get:
operationId: getProjectSavedChart
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSavedChartResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a saved chart by uuid or slug within a project
summary: Get chart
tags:
- v2
- Charts
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: chartUuidOrSlug
required: true
schema:
type: string
delete:
operationId: deleteProjectSavedChart
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 a saved chart by uuid or slug within a project
summary: Delete chart
tags:
- v2
- Charts
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: chartUuidOrSlug
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/defaults:
get:
operationId: getProjectDefaults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ProjectDefaults-or-undefined_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get project defaults configuration
summary: Get project defaults
tags:
- v2
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
put:
operationId: replaceProjectDefaults
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_undefined_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Replace project defaults configuration
summary: Replace project defaults
tags:
- v2
- Projects
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectDefaults'
/api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug}:
get:
operationId: getProjectDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a dashboard by uuid or slug within a project
summary: Get dashboard
tags:
- v2
- Dashboards
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
patch:
operationId: updateProjectDashboard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Update a dashboard by uuid or slug within a project
summary: Update dashboard
tags:
- v2
- Dashboards
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDashboard'
delete:
operationId: deleteProjectDashboard
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 a dashboard by uuid or slug within a project
summary: Delete dashboard
tags:
- v2
- Dashboards
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug}/comments:
get:
operationId: getProjectDashboardComments
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiGetComments'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Gets all comments for a dashboard within a project
summary: Get comments
tags:
- v2
- Dashboards
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: dashboardUuidOrSlug
required: true
schema:
type: string
- in: query
name: resolved
required: false
schema:
type: boolean
/api/v2/projects/{projectUuid}/parameters/list:
get:
operationId: getProjectParametersList
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiGetProjectParametersListResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get a paginated list of project parameters with search and sorting
capabilities.
summary: List project parameters
tags:
- v2
- Parameters
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: search
required: false
schema:
type: string
- in: query
name: sortBy
required: false
schema:
type: string
enum:
- name
- in: query
name: sortOrder
required: false
schema:
type: string
enum:
- asc
- desc
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: pageSize
required: false
schema:
format: double
type: number
/api/v2/projects/{projectUuid}/parameters:
get:
operationId: getProjectParameters
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_ApiGetProjectParametersResults_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get project parameters by names
summary: Get project parameters
tags:
- v2
- Parameters
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: names
required: false
schema:
type: array
items:
type: string
put:
operationId: replaceProjectParameters
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccess_undefined_'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Replace all project parameters
summary: Replace project parameters
tags:
- v2
- Parameters
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Record_string.LightdashProjectParameter_'
/api/v2/feature-flag/{featureFlagId}:
get:
operationId: Get feature flag
responses:
'200':
description: Success
content:
application/json:
schema:
properties:
results:
$ref: '#/components/schemas/FeatureFlag'
status:
type: string
enum:
- ok
nullable: false
required:
- results
- status
type: object
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get feature flag
summary: Get feature flag
tags:
- v2
- Feature Flag
security: []
parameters:
- in: path
name: featureFlagId
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/deploy:
post:
operationId: startDeploySession
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiStartDeploySessionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Start a new deploy session for batched explore uploads
summary: Start deploy session
tags:
- Project
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
/api/v2/projects/{projectUuid}/deploy/{sessionUuid}/batch:
post:
operationId: addDeployBatch
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiAddDeployBatchResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Add a batch of explores to an existing deploy session
summary: Add deploy batch
tags:
- Project
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: sessionUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnyType'
/api/v2/projects/{projectUuid}/deploy/{sessionUuid}/finalize:
post:
operationId: finalizeDeploySession
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFinalizeDeployResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Finalize a deploy session and commit all staged explores to the
project
summary: Finalize deploy
tags:
- Project
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: path
name: sessionUuid
required: true
schema:
type: string
/api/v2/dashboards/{dashboardUuid}/schedulers:
get:
operationId: getDashboardSchedulers
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDashboardPaginatedSchedulersResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get all schedulers for a dashboard
summary: List dashboard schedulers
tags:
- v2
- Dashboards
security: []
parameters:
- description: The uuid of the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: filter schedulers by name
in: query
name: searchQuery
required: false
schema:
type: string
- description: include the most recent run for each scheduler
in: query
name: includeLatestRun
required: false
schema:
type: boolean
/api/v2/dashboards/{dashboardUuid}/schedulers/{schedulerUuid}/runs:
get:
operationId: getDashboardSchedulerRuns
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSchedulerRunsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get the run history of a single scheduler on a dashboard
summary: List dashboard scheduler runs
tags:
- v2
- Dashboards
security: []
parameters:
- description: The uuid of the dashboard
in: path
name: dashboardUuid
required: true
schema:
type: string
- description: The uuid of the scheduler
in: path
name: schedulerUuid
required: true
schema:
type: string
- description: number of items per page
in: query
name: pageSize
required: false
schema:
format: double
type: number
- description: page number
in: query
name: page
required: false
schema:
format: double
type: number
- description: filter runs by scheduler name
in: query
name: searchQuery
required: false
schema:
type: string
- description: column to sort by (scheduledTime, createdAt)
in: query
name: sortBy
required: false
schema:
type: string
enum:
- scheduledTime
- createdAt
- description: sort direction (asc or desc)
in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
- description: comma-separated list of run statuses to include
in: query
name: statuses
required: false
schema:
type: string
- description: comma-separated list of destination types to include
in: query
name: destinations
required: false
schema:
type: string
/api/v2/content:
get:
operationId: List content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get content (charts, dashboards, spaces)
summary: List content
tags:
- v2
- Content
security: []
parameters:
- in: query
name: projectUuids
required: false
schema:
type: array
items:
type: string
- in: query
name: spaceUuids
required: false
schema:
type: array
items:
type: string
- in: query
name: parentSpaceUuid
required: false
schema:
type: string
- in: query
name: contentTypes
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ContentType'
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: search
required: false
schema:
type: string
- in: query
name: sortBy
required: false
schema:
$ref: '#/components/schemas/ContentSortByColumns'
- in: query
name: sortDirection
required: false
schema:
type: string
enum:
- asc
- desc
/api/v2/content/{projectUuid}/move:
post:
operationId: Move content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Move a single item (Chart, Dashboard, Space) to another space
summary: Move content
tags:
- Content
- Move content
- v2
- Content
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentActionBody_ContentActionMove_'
/api/v2/content/bulk-action/{projectUuid}/move:
post:
operationId: Bulk move content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Move multiple items (Charts, Dashboards, Spaces) to another space
summary: Bulk move content
tags:
- Content
- Bulk action
- Move content
- v2
- Content
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiContentBulkActionBody_ContentActionMove_'
/api/v2/content/deleted:
get:
operationId: List deleted content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDeletedContentResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get deleted content (soft-deleted charts, dashboards, etc.)
summary: List deleted content
tags:
- v2
- Content
security: []
parameters:
- in: query
name: projectUuids
required: true
schema:
type: array
items:
type: string
- in: query
name: pageSize
required: false
schema:
format: double
type: number
- in: query
name: page
required: false
schema:
format: double
type: number
- in: query
name: search
required: false
schema:
type: string
- in: query
name: contentTypes
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ContentType'
- in: query
name: deletedByUserUuids
required: false
schema:
type: array
items:
type: string
/api/v2/content/{projectUuid}/restore:
post:
operationId: Restore content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Restore a soft-deleted item (chart, dashboard, etc.)
summary: Restore content
tags:
- v2
- Content
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRestoreContentBody'
/api/v2/content/{projectUuid}/permanent:
delete:
operationId: Permanently delete content
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSuccessEmpty'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Permanently delete a soft-deleted item (chart, dashboard, etc.)
summary: Permanently delete content
tags:
- v2
- Content
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPermanentlyDeleteContentBody'
/api/v2/projects/{projectUuid}/dataCatalog/metrics-with-time-dimensions:
get:
operationId: getPaginatedMetricsWithTimeDimensions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPaginatedMetricsWithTimeDimensionResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorPayload'
description: Get paginated metrics that have time dimensions available
summary: List metrics with time dimensions
tags:
- v2
- Catalog
security: []
parameters:
- in: path
name: projectUuid
required: true
schema:
type: string
- in: query
name: page
required: false
schema:
default: 1
format: double
type: number
- in: query
name: pageSize
required: false
schema:
default: 50
format: double
type: number
- in: query
name: sort
required: false
schema:
$ref: '#/components/schemas/CatalogSortField'
- in: query
name: order
required: false
schema:
type: string
enum:
- asc
- desc
- in: query
name: tableName
required: false
schema:
type: string
- description: Spotlight category yaml references to filter by (OR mode)
in: query
name: categories
required: false
schema:
type: array
items:
type: string
- description: dbt tag names to filter by (OR mode)
in: query
name: tags
required: false
schema:
type: array
items:
type: string
servers:
- url: /
tags:
- name: My Account
description: These routes allow users to manage their own user account.
- name: Organizations
description: Each user is a member of a single organization. These routes allow
users to manage their organization. Most actions are only available to admin users.
- name: Projects
description: Projects belong to a single organization. These routes allow users
to manage their projects, browse content, and execute queries. Users inside an
organization might have access to a project from an organization-level role or
they might be granted access to a project directly.
- name: Spaces
description: Spaces allow you to organize charts and dashboards within a project.
They also allow granular access to content by allowing you to create private spaces,
which are only accessible to the creator and admins.
- name: Roles & Permissions
description: These routes allow users to manage roles and permissions for their
organization.
externalDocs:
url: https://docs.lightdash.com/references/roles
- name: Query
description: These routes allow users to execute and manage queries against their
data warehouse. This includes metric queries, SQL queries, and retrieving query
results.