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.