/** * This package provides definitions of the Service Provider Interface (SPI) for the Analytical Backend. * * @remarks * The interface defines functionality to be implemented for a particular backend to be used in GoodData.UI. * The Analytical Backend SPI for GoodData Cloud and GoodData.CN (joint codename `tiger` in `@gooddata/sdk-backend-tiger`) is almost fully implemented. * * @packageDocumentation */ import { AccessGranteeDetail } from '@gooddata/sdk-model'; import { CatalogItem } from '@gooddata/sdk-model'; import { CatalogItemType } from '@gooddata/sdk-model'; import { DashboardFiltersApplyMode } from '@gooddata/sdk-model'; import { DataValue } from '@gooddata/sdk-model'; import { DateAttributeGranularity } from '@gooddata/sdk-model'; import { DimensionGenerator } from '@gooddata/sdk-model'; import type { FilterContextItem } from '@gooddata/sdk-model'; import type { GenAIChatEffort } from '@gooddata/sdk-model'; import type { GenAIChatInteractionUserFeedback } from '@gooddata/sdk-model'; import type { GenAIChatInteractionUserVisualisation } from '@gooddata/sdk-model'; import type { GenAIObjectType } from '@gooddata/sdk-model'; import { GeoCollectionKind } from '@gooddata/sdk-model'; import { IAbsoluteDateFilter } from '@gooddata/sdk-model'; import { IAccessGrantee } from '@gooddata/sdk-model'; import { IActiveCalendars } from '@gooddata/sdk-model'; import { IAgent } from '@gooddata/sdk-model'; import { IAgentPatch } from '@gooddata/sdk-model'; import { IAgentSkill } from '@gooddata/sdk-model'; import { IAiRateLimit } from '@gooddata/sdk-model'; import { IAlertDefault } from '@gooddata/sdk-model'; import type { IAllowedRelationshipType } from '@gooddata/sdk-model'; import { IAttribute } from '@gooddata/sdk-model'; import { IAttributeDisplayFormMetadataObject } from '@gooddata/sdk-model'; import { IAttributeElement } from '@gooddata/sdk-model'; import { IAttributeFilter } from '@gooddata/sdk-model'; import { IAttributeMetadataObject } from '@gooddata/sdk-model'; import { IAttributeOrMeasure } from '@gooddata/sdk-model'; import type { IAutomationAlert } from '@gooddata/sdk-model'; import { IAutomationMetadataObject } from '@gooddata/sdk-model'; import { IAutomationMetadataObjectDefinition } from '@gooddata/sdk-model'; import type { IAutomationRecipient } from '@gooddata/sdk-model'; import type { IAutomationSchedule } from '@gooddata/sdk-model'; import { IAvailableAccessGrantee } from '@gooddata/sdk-model'; import { IBucket } from '@gooddata/sdk-model'; import { ICatalogAttribute } from '@gooddata/sdk-model'; import { ICatalogAttributeHierarchy } from '@gooddata/sdk-model'; import { ICatalogDateDataset } from '@gooddata/sdk-model'; import { ICatalogFact } from '@gooddata/sdk-model'; import { ICatalogGroup } from '@gooddata/sdk-model'; import { ICatalogMeasure } from '@gooddata/sdk-model'; import { IColorPalette } from '@gooddata/sdk-model'; import { IColorPaletteDefinition } from '@gooddata/sdk-model'; import { IColorPaletteMetadataObject } from '@gooddata/sdk-model'; import type { IDashboard } from '@gooddata/sdk-model'; import type { IDashboardAttributeFilterConfig } from '@gooddata/sdk-model'; import type { IDashboardBase } from '@gooddata/sdk-model'; import type { IDashboardDefinition } from '@gooddata/sdk-model'; import type { IDashboardExportParameter } from '@gooddata/sdk-model'; import type { IDashboardFilterView } from '@gooddata/sdk-model'; import type { IDashboardFilterViewSaveRequest } from '@gooddata/sdk-model'; import { IDashboardLayout } from '@gooddata/sdk-model'; import { IDashboardLayoutItem } from '@gooddata/sdk-model'; import { IDashboardLayoutSection } from '@gooddata/sdk-model'; import type { IDashboardObjectIdentity } from '@gooddata/sdk-model'; import type { IDashboardPermissions } from '@gooddata/sdk-model'; import type { IDashboardPlugin } from '@gooddata/sdk-model'; import type { IDashboardPluginDefinition } from '@gooddata/sdk-model'; import { IDashboardWidget } from '@gooddata/sdk-model'; import { IDataset } from '@gooddata/sdk-model'; import { IDataSetMetadataObject } from '@gooddata/sdk-model'; import { IDataSourceIdentifierDescriptor } from '@gooddata/sdk-model'; import { IDataSourcePermissionAssignment } from '@gooddata/sdk-model'; import type { IDateFilter } from '@gooddata/sdk-model'; import { IDateFilterConfig } from '@gooddata/sdk-model'; import { IDateHierarchyTemplate } from '@gooddata/sdk-model'; import { IDefaultExportTemplate } from '@gooddata/sdk-model'; import type { Identifier } from '@gooddata/sdk-model'; import { IdentifierRef } from '@gooddata/sdk-model'; import { IDimension } from '@gooddata/sdk-model'; import { IDimensionDescriptor } from '@gooddata/sdk-model'; import { IEntitlementDescriptor } from '@gooddata/sdk-model'; import { IExecutionConfig } from '@gooddata/sdk-model'; import { IExecutionDefinition } from '@gooddata/sdk-model'; import { IExecutionResultLimitBreak } from '@gooddata/sdk-model'; import type { IExistingDashboard } from '@gooddata/sdk-model'; import { IExportDefinitionMetadataObject } from '@gooddata/sdk-model'; import { IExportDefinitionMetadataObjectDefinition } from '@gooddata/sdk-model'; import { IExportTemplate } from '@gooddata/sdk-model'; import { IExportTemplateDefinition } from '@gooddata/sdk-model'; import { IFactMetadataObject } from '@gooddata/sdk-model'; import { IFilter } from '@gooddata/sdk-model'; import type { IFilterContext } from '@gooddata/sdk-model'; import type { IFilterContextDefinition } from '@gooddata/sdk-model'; import { IFiscalYear } from '@gooddata/sdk-model'; import type { IGenAIChangeAnalysisParams } from '@gooddata/sdk-model'; import type { IGenAIChatInteraction } from '@gooddata/sdk-model'; import type { IGenAIChatReasoning } from '@gooddata/sdk-model'; import type { IGenAIChatRouting } from '@gooddata/sdk-model'; import type { IGenAICreatedVisualizations } from '@gooddata/sdk-model'; import type { IGenAIFoundObjects } from '@gooddata/sdk-model'; import type { IGenAIUserContext } from '@gooddata/sdk-model'; import { IGeoCollection } from '@gooddata/sdk-model'; import { IGeoCollectionDefinition } from '@gooddata/sdk-model'; import { IGeoCollectionFileUploadResult } from '@gooddata/sdk-model'; import { IGeoJsonFeature } from '@gooddata/sdk-model'; import { IGranularAccessGrantee } from '@gooddata/sdk-model'; import { IInsight } from '@gooddata/sdk-model'; import { IInsightDefinition } from '@gooddata/sdk-model'; import { IIpAllowlist } from '@gooddata/sdk-model'; import { IIpAllowlistDefinition } from '@gooddata/sdk-model'; import type { IListedDashboard } from '@gooddata/sdk-model'; import { ILlmProvider } from '@gooddata/sdk-model'; import { IMeasure } from '@gooddata/sdk-model'; import { IMeasureDescriptor } from '@gooddata/sdk-model'; import type { IMeasureMetadataObject } from '@gooddata/sdk-model'; import type { IMeasureMetadataObjectDefinition } from '@gooddata/sdk-model'; import type { IMemoryItemDefinition } from '@gooddata/sdk-model'; import type { IMemoryItemMetadataObject } from '@gooddata/sdk-model'; import { IMetadataObject } from '@gooddata/sdk-model'; import { IMetadataObjectBase } from '@gooddata/sdk-model'; import { IMetadataObjectIdentity } from '@gooddata/sdk-model'; import { IMetricFormatOverrideSetting } from '@gooddata/sdk-model'; import { INotification } from '@gooddata/sdk-model'; import { INotificationChannelExternalRecipient } from '@gooddata/sdk-model'; import { INotificationChannelIdentifier } from '@gooddata/sdk-model'; import { INotificationChannelMetadataObject } from '@gooddata/sdk-model'; import { INotificationChannelMetadataObjectDefinition } from '@gooddata/sdk-model'; import { INotificationChannelTestResponse } from '@gooddata/sdk-model'; import { INullableFilter } from '@gooddata/sdk-model'; import { IObjectAccessList } from '@gooddata/sdk-model'; import type { IObjectCertificationWrite } from '@gooddata/sdk-model'; import { IOpenAiConfig } from '@gooddata/sdk-model'; import { IOrganizationAssignee } from '@gooddata/sdk-model'; import { IOrganizationDescriptor } from '@gooddata/sdk-model'; import { IOrganizationDescriptorUpdate } from '@gooddata/sdk-model'; import { IOrganizationPermissionAssignment } from '@gooddata/sdk-model'; import { IOrganizationUser } from '@gooddata/sdk-model'; import { IOrganizationUserGroup } from '@gooddata/sdk-model'; import { IParameterMetadataObject } from '@gooddata/sdk-model'; import { IParameterMetadataObjectDefinition } from '@gooddata/sdk-model'; import { IRelativeDateFilter } from '@gooddata/sdk-model'; import { IResultHeader } from '@gooddata/sdk-model'; import { IResultWarning } from '@gooddata/sdk-model'; import type { IScheduledMail } from '@gooddata/sdk-model'; import type { IScheduledMailDefinition } from '@gooddata/sdk-model'; import type { ISemanticQualityIssuesCalculation } from '@gooddata/sdk-model'; import type { ISemanticQualityReport } from '@gooddata/sdk-model'; import type { ISemanticSearchRelationship } from '@gooddata/sdk-model'; import type { ISemanticSearchResult } from '@gooddata/sdk-model'; import type { ISemanticSearchResultItem } from '@gooddata/sdk-model'; import { ISeparators } from '@gooddata/sdk-model'; import { ISettings } from '@gooddata/sdk-model'; import { ISortItem } from '@gooddata/sdk-model'; import { ITheme } from '@gooddata/sdk-model'; import { IThemeDefinition } from '@gooddata/sdk-model'; import { IThemeMetadataObject } from '@gooddata/sdk-model'; import { IUser } from '@gooddata/sdk-model'; import { IUserGroup } from '@gooddata/sdk-model'; import { IUserSettings } from '@gooddata/sdk-model'; import { IUserWorkspaceSettings } from '@gooddata/sdk-model'; import type { IVisualizationClass } from '@gooddata/sdk-model'; import { IWhiteLabeling } from '@gooddata/sdk-model'; import { IWidget } from '@gooddata/sdk-model'; import type { IWidgetAlert } from '@gooddata/sdk-model'; import type { IWidgetAlertDefinition } from '@gooddata/sdk-model'; import { IWidgetDefinition } from '@gooddata/sdk-model'; import { IWorkspaceDataFilter } from '@gooddata/sdk-model'; import { IWorkspaceDataFilterDefinition } from '@gooddata/sdk-model'; import { IWorkspacePermissionAssignment } from '@gooddata/sdk-model'; import { IWorkspacePermissions } from '@gooddata/sdk-model'; import { IWorkspaceSettings } from '@gooddata/sdk-model'; import { IWorkspaceUser } from '@gooddata/sdk-model'; import { IWorkspaceUserGroup } from '@gooddata/sdk-model'; import { LlmProviderListModelsResults } from '@gooddata/sdk-model'; import { LlmProviderPatch } from '@gooddata/sdk-model'; import { LlmProviderTestResults } from '@gooddata/sdk-model'; import type { MemoryItemStrategy } from '@gooddata/sdk-model'; import { NotificationChannelDestinationType } from '@gooddata/sdk-model'; import { ObjectOrigin } from '@gooddata/sdk-model'; import { ObjectPermissionsObjectKind } from '@gooddata/sdk-model'; import { ObjectType } from '@gooddata/sdk-model'; import { ObjRef } from '@gooddata/sdk-model'; import { OrganizationPermissionAssignment } from '@gooddata/sdk-model'; import { SortDirection } from '@gooddata/sdk-model'; import { UserDataFilter } from '@gooddata/sdk-model'; import { UserDataFilterDefinition } from '@gooddata/sdk-model'; /** * This exception is thrown when the request is canceled. * * @public */ export declare class AbortError extends AnalyticalBackendError { constructor(message: string); } /** * Superclass for all exceptions that can occur in Analytical Backend. * * @public */ export declare abstract class AnalyticalBackendError extends Error { readonly abeType: string; readonly cause?: Error | undefined; protected constructor(message: string, abeType: string, cause?: Error | undefined); } /** * Types of errors that can be raised by Analytical Backends. * * @public */ export declare const AnalyticalBackendErrorTypes: { NO_DATA: string; DATA_TOO_LARGE: string; PROTECTED_DATA: string; UNEXPECTED_HTTP: string; UNEXPECTED: string; NOT_SUPPORTED: string; NOT_IMPLEMENTED: string; NOT_AUTHENTICATED: string; LIMIT_REACHED: string; CONTRACT_EXPIRED: string; PERMISSION_ESCALATION_REFUSED: string; TIMEOUT_ERROR: string; ABORT: string; }; /** * Factory function to create new instances of Analytical Backend realization using both platform agnostic * and platform specific configuration. * * @remarks * This factory function implementation MUST be exposed as the default export of packages which contain * realizations of the Analytical Backend SPI. * * * @param config - platform agnostic configuration * @param implConfig - platform specific configuration * @public */ export declare type AnalyticalBackendFactory = (config?: IAnalyticalBackendConfig, implConfig?: any) => IAnalyticalBackend; /** * Supported object types for AI-generated Analytics Catalog description. * @internal */ export declare type AnalyticsCatalogGenerateDescriptionObjectType = Extract; /** * Supported object types for AI-generated Analytics Catalog title. * @internal */ export declare type AnalyticsCatalogGenerateTitleObjectType = AnalyticsCatalogGenerateDescriptionObjectType; /** * Implementation of different backends MAY indicate through this structure where to redirect the browser * in order to start authentication flow. * * @remarks * The `returnRedirectParam` is the name of the query parameter that the application should set when redirecting. * The value of the query parameter is the return URL where the browser should return after successful authentication. * * @public */ export declare type AuthenticationFlow = { loginUrl: string; returnRedirectParam: string; }; /** * Type of automation filter behavior * @alpha */ export declare type AutomationFilterType = "exact" | "include" | "exclude"; /** * Type of automation supported across workspaces and organizations. * * @alpha */ export declare type AutomationType = "schedule" | "trigger" | "alert"; /** * Options that is used for propagation cancellation signal / abort signal * @beta */ export declare type CancelableOptions = { signal?: AbortSignal; }; /** * This exception is thrown when a contract has expired, for example if a plan's trial period has ended * * @public */ export declare class ContractExpired extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * Status of the dashboard summary workflow. * * @internal */ export declare type DashboardSummaryWorkflowStatus = "RUNNING" | "COMPLETED" | "FAILED" | "CANCELLED"; /** * This exception MUST be thrown when backend execution identifies that there is too much data * to process for the execution and refuses to proceed. * * @public */ export declare class DataTooLargeError extends AnalyticalBackendError { /** * Additional details of the error. * * @alpha */ readonly responseBody: IDataTooLargeResponseBody | undefined; constructor(message: string, cause?: Error, /** * Additional details of the error. * * @alpha */ responseBody?: IDataTooLargeResponseBody | undefined); } /** * Specification of particular elements to load in {@link IElementsQueryOptions}. * * @public */ export declare type ElementsQueryOptionsElementsSpecification = IElementsQueryOptionsElementsByValue | IElementsQueryOptionsElementsByPrimaryDisplayFormValue | IElementsQueryOptionsElementsByUri; /** * Error converter * * @public */ export declare type ErrorConverter = (e: Error) => AnalyticalBackendError; /** * Format in which the result data are streamed. * * - "arrow-stream" for Apache Arrow IPC Stream format (application/vnd.apache.arrow.stream MIME type) * * @alpha */ export declare type ExecutionResultBinaryStreamFormat = "arrow-stream"; /** * Config for execution in explain mode * @internal */ export declare type ExplainConfig = { explainType?: T; }; /** * All supported explain types * @internal */ export declare type ExplainType = "MAQL" | "GRPC_MODEL" | "WDF" | "QT" | "QT_SVG" | "OPT_QT" | "OPT_QT_SVG" | "SQL"; /** * Ordering options for exportDefinition query. * * @alpha */ export declare type ExportDefinitionOrdering = "id" | "title" | "updated"; /** * Sort criteria for exportDefinition query. * * @alpha */ export declare type ExportDefinitionQuerySort = ExportDefinitionQuerySortProperty | `${ExportDefinitionQuerySortProperty},${ExportDefinitionQuerySortDirection}`; /** * Sort direction for exportDefinition query. * * @alpha */ export declare type ExportDefinitionQuerySortDirection = "asc" | "desc"; /** * Sort order for exportDefinition query. * * @alpha */ export declare type ExportDefinitionQuerySortProperty = "id" | "title"; /** * Structure holding filters from each tab * @alpha */ export declare type FiltersByTab = { [tabId: string]: FilterContextItem[]; }; /** * Only for these filter types makes sense to resolve their elements * * @public */ export declare type FilterWithResolvableElements = IAttributeFilter | IRelativeDateFilter; /** * Type of the output the turn produced. * @internal */ export declare type GenAIAnswerOutput = "text" | "visualization" | "dashboard" | "keyDriverAnalysis" | "whatIf" | "searchResults" | "alertProposal"; /** * How a memory item got into the turn's prompt: `always` is injected unconditionally, `auto` by * relevance. * @internal */ export declare type GenAIAppliedMemoryStrategy = "always" | "auto"; /** * Category of an interaction step. * @internal */ export declare type GenAIInteractionStepCategory = "applyMemory" | "skillRouting" | "knowledgeSearch" | "catalogSearch" | "metricQuery" | "composeAnswer"; /** * Service to query agents. * * @alpha */ export declare interface IAgentsQuery { /** * Sets number of agents to return per page. * Default size: 100 * * @param size - desired max number of agents per page, must be a positive number * @returns agents query */ withSize(size: number): IAgentsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns agents query */ withPage(page: number): IAgentsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns agents query */ withSorting(sort: string[]): IAgentsQuery; /** * Sets filter for the query. * * @param filter - filter object with optional name for name-based search, * and optional `isPreview` to filter by the preview flag (omit to return both). * @returns agents query */ withFilter(filter: { name?: string; isPreview?: boolean; }): IAgentsQuery; /** * Starts the agents query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the agents query. * * @returns promise with a list of all agents matching the specified options */ queryAll(): Promise; } /** * Queried agents are returned in a paged representation. * * @alpha */ export declare type IAgentsQueryResult = IPagedResource; /** * Represents a proposal for an alert * @internal */ export declare interface IAlertProposal { /** * Automation id. */ id?: string; /** * Title of the alert. */ title: string; /** * Description of the alert. */ description: string; /** * Alerting configuration of the automation. */ alert?: IAutomationAlert; /** * Schedule of the automation. */ schedule?: IAutomationSchedule; /** * Target notificationChannel that automation will trigger. * String with webhook (notificationChannel) id. */ notificationChannel?: string; /** * Title of the notification channel. */ notificationChannelTitle?: string; /** * Dashboard that automation is related to. */ dashboard?: { /** * Dashboard id. */ id?: Identifier; /** * Dashboard title. */ title?: string; }; /** * Recipients of the automation. */ recipients?: IAutomationRecipient[]; /** * For mode of the automation. */ forMode?: string; /** * For label of the automation. */ forLabel?: string; /** * Call to action of the automation. */ cta?: string; } /** * The root of the Analytical Backend SPI. * * @remarks * It allows configuration related to communication with the backend and access to analytical workspaces. * * The analytical backend instance MUST be immutable. Changes to configuration of the backend MUST create a new * instance to work with. * * @public */ export declare interface IAnalyticalBackend { /** * Configuration used for communication with this backend. */ readonly config: IAnalyticalBackendConfig; /** * Capabilities available on this backend. */ readonly capabilities: IBackendCapabilities; /** * Creates new instance of backend on the provided hostname. * * @remarks * It is valid NOT TO specify any hostname, in * which case the analytical backend assumes it should communicate with the current origin. * * @param hostname - host[:port] * @returns new, unauthenticated instance */ onHostname(hostname: string): IAnalyticalBackend; /** * Sets telemetry information that SHOULD be sent to backend to track component usage. * * @param componentName - name of component * @param props - props * @returns a new instance of backend, set up with the provided telemetry */ withTelemetry(componentName: string, props: object): IAnalyticalBackend; /** * Sets request correlation metadata that will be included in HTTP requests to the backend. * If the {@link IAnalyticalBackend} instance already has correlation metadata set, the new metadata will be merged with the existing one. * This method provides more flexibility than withTelemetry by allowing arbitrary key-value pairs to be sent. * * @param correlationMetadata - key-value pairs to include as correlation metadata * @returns a new instance of backend configured with the merged correlation metadata */ withCorrelation(correlationMetadata: IRequestCorrelationMetadata): IAnalyticalBackend; /** * Sets authentication provider to be used when backend discovers current session is * not authenticated. * * @param provider - authentication provider to use * @returns a new instance of backend, set up with the provider */ withAuthentication(provider: IAuthenticationProvider): IAnalyticalBackend; /** * Tests authentication against this backend. * * @remarks * This requires network communication and is thus * asynchronous. If the current backend (or session it lives in) is not authenticated, then * this method MUST NOT call the authentication provider. * * @returns promise of authenticated principal is returned if authenticated, null is returned if not authenticated. */ isAuthenticated(): Promise; /** * Triggers authentication process against the backend. * * @remarks * If the 'force' parameter is specified, then the method MUST always lead to a call to the authentication * provider. * * If the 'force' parameter is not specified, then the method MAY lead to a call to the authentication provider - * if the backend lives in an already authenticated session, principal is returned. If the session is not * authenticated, then the provider WILL BE called. * * @param force - indicates whether authentication should be forced = must always be done even if the current * session is already authenticated; defaults to false * @returns promise of authenticated principal, or rejection if authentication has failed. */ authenticate(force?: boolean): Promise; /** * Triggers deauthentication process against the backend. * @param returnTo - url to redirect after successful relogin * * @returns promise of the completed process, or rejection if deauthentication failed. */ deauthenticate(returnTo?: string): Promise; /** * Returns an organization available on the backend. * @param organizationId - unique ID of the organization */ organization(organizationId: string): IOrganization; /** * Returns a service that can be obtained to obtain organizations. */ organizations(): IOrganizations; /** * Returns a service for interacting with the currently authenticated user. * * @returns an instance that can be used to interact with the user */ currentUser(): IUserService; /** * Returns an analytical workspace available on this backend. * * @param id - identifier of the workspace * @returns an instance that can be used to interact with the workspace */ workspace(id: string): IAnalyticalWorkspace; /** * Returns service that can be used to obtain available workspaces. */ workspaces(): IWorkspacesQueryFactory; /** * Returns service that can be used to obtain license entitlements. */ entitlements(): IEntitlements; /** * Returns service that can be used to work with data sources. */ dataSources(): IDataSourcesService; /** * Returns service that can be used to load geo location assets. */ geo(): IGeoService; /** * Backend-specific functions for the concrete backend implementation. * This is heavily discouraged and should be migrated away from in the future. * * @remarks * The type is left as `unknown` to avoid introducing a dependency on the backend implementation. * For the Tiger backend the concrete type is `TigerSpecificFunctions` from `@gooddata/sdk-backend-tiger`. * * @internal * @deprecated Will be removed once all callers migrate to proper SDK APIs. */ readonly internal_backendSpecificFunctions?: unknown; } /** * Specifies platform agnostic configuration of an analytical backend. * * @remarks * Only config items that make sense for any and all analytical backend implementations are specified here. * * @public */ export declare interface IAnalyticalBackendConfig { /** * Server hostname (including protocol and port). * * @remarks * If not specified and running in browser, then the * backend will communicate with origin. */ readonly hostname?: string; } /** * Represents an analytical workspace hosted on a backend. * * @remarks * It is an entry point to various services that can be used to inspect and modify the workspace * and run executions to obtain analytics for the workspace. * * @public */ export declare interface IAnalyticalWorkspace { readonly workspace: string; /** * Returns details about the analytical workspace. * Throws error in case the workspace does not exist. * * @param includeParentPrefixes - Optional parameter to include parent prefixes in the workspace descriptor. */ getDescriptor(includeParentPrefixes?: boolean): Promise; /** * Updates the details of the workspace. * Throws error in case the workspace does not exist. * * @param descriptor - properties to update */ updateDescriptor(descriptor: IWorkspaceDescriptorUpdate): Promise; /** * Returns parent analytical workspace when this workspace has a parent, undefined otherwise. */ getParentWorkspace(): Promise; /** * Returns service that can be used to query and update workspace automations. * * @alpha */ automations(): IWorkspaceAutomationService; /** * Returns factory that can be used to query workspace catalog items - attributes, measures, facts and date data sets. */ catalog(): IWorkspaceCatalogFactory; /** * Returns service that can be used to query and update insights. */ insights(): IWorkspaceInsightsService; /** * Returns service that can be used to query and update dashboards. */ dashboards(): IWorkspaceDashboardsService; /** * Returns service that can be used to work with key drivers. */ keyDriverAnalysis(): IWorkspaceKeyDriverAnalysisService; /** * Returns service that can be used to query date filter configs. */ dateFilterConfigs(): IDateFilterConfigsQuery; /** * Returns service that can be used to query additional attributes and attribtue display forms data, and their elements. */ attributes(): IWorkspaceAttributesService; /** * Returns service that can be used to query additional measures data. */ measures(): IWorkspaceMeasuresService; /** * Returns service that can be used to query additional parameters data. */ parameters(): IWorkspaceParametersService; /** * Returns service that can be used to query additional facts data. */ facts(): IWorkspaceFactsService; /** * Returns service that can be used to query data sets defined in this workspace. */ datasets(): IWorkspaceDatasetsService; /** * Returns execution factory - which is an entry point to triggering executions and thus obtaining * analytics from the workspace. */ execution(): IExecutionFactory; /** * Returns service that can be used to query workspace users. */ users(): IWorkspaceUsersQuery; /** * Returns service that can be used to query workspace user groups. */ userGroups(): IWorkspaceUserGroupsQuery; /** * Returns service that can be used to query workspace permissions. */ permissions(): IWorkspacePermissionsService; /** * Returns service that can be used to obtain settings that are currently in effect for the workspace. */ settings(): IWorkspaceSettingsService; /** * Returns service that can be used to obtain workspace styling settings. These settings specify for instance * what colors should be used in the charts. */ styling(): IWorkspaceStylingService; /** * Returns service that can be used to manage access control records for the workspace. */ accessControl(): IWorkspaceAccessControlService; /** * Returns service that manages per-object access for catalog attributes, facts and labels. * @alpha */ objectPermissions(): IWorkspaceObjectPermissionsService; /** * Returns service that operates over attribute hierarchies * @alpha */ attributeHierarchies(): IAttributeHierarchiesService; /** * Returns service that can be used to query AI agents available in this workspace. * * @alpha */ agents(): IWorkspaceAgentsService; /** * Returns service that operates over export definitions * @alpha */ exportDefinitions(): IWorkspaceExportDefinitionsService; /** * Returns service that operates over Data Filters. * @alpha */ dataFilters(): IDataFiltersService; /** * Returns experimental service that operates over logical data model. * @internal */ logicalModel(): IWorkspaceLogicalModelService; /** * Returns service that can be used to access GenAI services. * @beta */ genAI(): IGenAIService; /** * Returns service that can be used to access references. */ references(): IReferencesService; /** * Returns service that can be used to query workspace-level export templates for slide exports. * * @beta */ exportTemplates(): IWorkspaceExportTemplatesService; } /** * Analytics Catalog creators response. * @internal */ export declare interface IAnalyticsCatalogCreatedBy { reasoning: string; users: IUser[]; } /** * Request payload for AI-generated Analytics Catalog description. * @internal */ export declare interface IAnalyticsCatalogGenerateDescriptionRequest { objectType: AnalyticsCatalogGenerateDescriptionObjectType; objectId: string; } /** * Response payload for AI-generated Analytics Catalog description. * @internal */ export declare interface IAnalyticsCatalogGenerateDescriptionResponse { description?: string; note?: string; } /** * Request payload for AI-generated Analytics Catalog title. * @internal */ export declare interface IAnalyticsCatalogGenerateTitleRequest { objectType: AnalyticsCatalogGenerateTitleObjectType; objectId: string; } /** * Response payload for AI-generated Analytics Catalog title. * @internal */ export declare interface IAnalyticsCatalogGenerateTitleResponse { title?: string; note?: string; } /** * GenAI Analytics Catalog service. * @internal */ export declare interface IAnalyticsCatalogService { /** * Generates AI description for an Analytics Catalog object. */ generateDescription(request: IAnalyticsCatalogGenerateDescriptionRequest): Promise; /** * Generates AI title for an Analytics Catalog object. */ generateTitle(request: IAnalyticsCatalogGenerateTitleRequest): Promise; /** * Returns list of available tags in the workspace Analytics Catalog. */ getTags(): Promise; /** * Returns information about users who created objects in the workspace Analytics Catalog. */ getCreatedBy(): Promise; /** * Returns trending objects in the workspace Analytics Catalog. */ getTrendingObjects(): Promise; } /** * Analytics Catalog tags response. * @internal */ export declare interface IAnalyticsCatalogTags { tags: string[]; } /** * Analytics Catalog trending object. * @internal */ export declare interface IAnalyticsCatalogTrendingObject { id: string; type: string; title: string; tags: string[]; createdAt?: string; modifiedAt?: string; createdBy?: string; modifiedBy?: string; isHidden?: boolean; isHiddenFromKda?: boolean; visualizationUrl?: string; } /** * Analytics Catalog trending objects response. * @internal */ export declare interface IAnalyticsCatalogTrendingObjects { objects: IAnalyticsCatalogTrendingObject[]; } /** * @alpha */ export declare interface IAnomalyDetectionConfig { /** * Sensitivity of the anomaly detection - e.g. 1.5 */ sensitivity: number; } /** * @alpha */ export declare interface IAnomalyDetectionResult { attribute: string[]; values: Array; anomalyFlag: Array; } /** * Parsed {@link https://help.gooddata.com/pages/viewpage.action?pageId=86795279 | MAQL} token referencing an attribute element. * * @remarks * See {@link IMeasureExpressionToken} for more information. * * @public */ export declare interface IAttributeElementExpressionToken { /** * Expression token type */ type: "attributeElement"; /** * Element title */ value: string | undefined; /** * Deleted element */ deleted?: boolean; } /** * Service for handle workspace attribute hierarchies * * @alpha */ export declare interface IAttributeHierarchiesService { /** * Creates attribute hierarchy */ createAttributeHierarchy(title: string, attributes: ObjRef[]): Promise; /** * Updates attribute hierarchy */ updateAttributeHierarchy(catalogAttributeHierarchy: ICatalogAttributeHierarchy): Promise; /** * Deletes attribute hierarchy */ deleteAttributeHierarchy(attributeHierarchyId: string): Promise; /** * Gets valid descendants for given attributes */ getValidDescendants(attributes: ObjRef[]): Promise; /** * Gets hierarchy template for date dataset */ getDateHierarchyTemplates(): Promise; } /** * Service to query attributes. * * @public */ export declare interface IAttributesQuery { /** * Sets number of attributes to return per page. * Default size: 50 * * @param size - desired max number of attributes per page must be a positive number * @returns attributes query */ withSize(size: number): IAttributesQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns attributes query */ withPage(page: number): IAttributesQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns attributes query */ withFilter(filter: IAttributesQueryFilterOptions): IAttributesQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns attributes query */ withSorting(sort: string[]): IAttributesQuery; /** * Sets include for the query. * * @param include - include to apply * @returns attributes query */ withInclude(include: string[]): IAttributesQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns attributes query */ withOrigin(origin: ObjectOrigin | (string & {})): IAttributesQuery; /** * Selects which backend endpoint flavor to use when listing attributes. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns attributes query * @beta */ withMethod(method: QueryMethod): IAttributesQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Attributes query filter options. * * @beta */ export declare interface IAttributesQueryFilterOptions extends IFilterBaseOptions { /** * Excludes date dataset attributes from results. * * @beta */ excludeDateAttributes?: boolean; } /** * Queried attributes are returned in a paged representation. * * @public */ export declare type IAttributesQueryResult = IPagedResource; /** * @beta */ export declare interface IAttributeWithReferences { /** * Attribute metadata object */ attribute: IAttributeMetadataObject; /** * Attribute related data set metadata object. */ dataSet?: IDataSetMetadataObject; } /** * Describes user, which is currently authenticated to the backend. * * @public */ export declare interface IAuthenticatedPrincipal { /** * Unique identifier of the authenticated user. * * @remarks * The identifier semantics MAY differ between backend * implementations. The client code SHOULD NOT make assumptions on the content (such as userId being * valid email and so on). */ userId: string; /** * Backend-specific user metadata. */ userMeta?: any; } /** * Describes context in which the authentication is done. * * @remarks * To cater for custom authentication schemes. the API client of the underlying backend IS exposed anonymously * to the provider - the provider SHOULD use the provided API client to exercise any backend-specific authentication * mechanisms. * * @public */ export declare interface IAuthenticationContext { /** * An instance of analytical backend which triggered the authentication. */ backend: IAnalyticalBackend; /** * API client used to communicate with the backend. * * @remarks * This can be used to perform any backend-specific, * non-standard authentication. */ client: any; } /** * Defines authentication provider to use when instance of {@link IAnalyticalBackend} discovers that * the current session is not authentication. * * @public */ export declare interface IAuthenticationProvider { /** * Perform custom initialization of the client that the Analytical Backend uses to communicate * with the server. * * @remarks * If implemented, this function WILL BE called by the backend every time a new instance of API client * is created. * * Note: the configuration and construction of Analytical Backend instance is cumulative. Backend implementations * MAY create multiple instances of clients during construction. * * @param client - an instance of client */ initializeClient?(client: any): void; /** * Specify function to be called when the Analytical Backend raises a {@link NotAuthenticated} error. * * @param context - context in which the authentication is done * @param error - an instance of {@link NotAuthenticated} error */ onNotAuthenticated?: NotAuthenticatedHandler; /** * Perform authentication. * * @param context - context in which the authentication is done */ authenticate(context: IAuthenticationContext): Promise; /** * Returns the currently authenticated principal, or undefined if not authenticated. * Does not trigger authentication if no principal is available. */ getCurrentPrincipal(context: IAuthenticationContext): Promise; /** * Clear existing authentication. * * @param context - context in which the authentication is done * @param returnTo - url to redirect after successful logout */ deauthenticate(context: IAuthenticationContext, returnTo?: string): Promise; /** * Instructs the consumer which uses this provider to not cache authentication in any ways. * Note: It does not affect calls deduplication like debouncing or throttling. * * If true, the consumer will always call authenticate if there is a need to authenticate user (like if some request respons with 401). * If false, the consumer is allowed to cache the authenticated principal and reuse it for subsequent requests. This is the current behavior. * * It is here because some implementations of authentication works with time restricted sessions. * It means the session can expire during user activity and the consumer should call authenticate again and not just reuse the cached principal. * * FIXME: I believe this should be true by default and if authentication provider wants to do some caching, it should implement it on its own. * In this case, this property should be removed from the interface. * But for now I dont have enough time to refactor this, so Im creating this backwards compatible solution. * See JIRA ticket F1-1256 for more details. */ disablePrincipalCache: boolean; } /** * Service to query automations. * * @public */ export declare interface IAutomationsQuery { /** * Sets number of automations to return per page. * Default size: 100 * * @param size - desired max number of automations per page must be a positive number * @returns automations query */ withSize(size: number | undefined): IAutomationsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns automations query */ withPage(page: number | undefined): IAutomationsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns automations query */ withFilter(filter: { title?: string; }): IAutomationsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns automations query */ withSorting(sort: string[]): IAutomationsQuery; /** * Sets type of the automation for the query. * * @param type - type of the automation, e.g. "schedule" or "trigger" * @returns automations query */ withType(type: AutomationType | undefined): IAutomationsQuery; /** * Sets author of the automation for the query. * * @param author - author of the automation * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ withAuthor(author: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets recipient of the automation for the query. * * @param recipient - recipient of the automation * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ withRecipient(recipient: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets external recipient of the automation for the query. * * @param externalRecipient - external recipient of the automation * @returns automations query */ withExternalRecipient(externalRecipient: string | undefined): IAutomationsQuery; /** * This filter gets automations if either author or recipient of the automation is the provided user. * * @param user - author or recipient of the automation * @returns automations query */ withUser(user: string): IAutomationsQuery; /** * Sets dashboard id for the query. * * @param dashboard - dashboard id * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ withDashboard(dashboard: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets status of automation results for the query. * * @param status - status of the automation result ("SUCCESS" or "FAILED") * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ withStatus(status: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Starts the automations query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the automations query. * * @returns promise with a list of all automations matching the specified options */ queryAll(): Promise; } /** * Queried automations are returned in a paged representation. * * @public */ export declare type IAutomationsQueryResult = IPagedResource; /** * Analytical Backend communicates its capabilities via objects of this type. In return, the capabilities * can then be used by applications to enable / disable particular features. * * @public */ export declare interface IBackendCapabilities { /** * Indicates whether the backend is capable to address objects using URIs */ supportsObjectUris?: boolean; /** * Indicates whether the backend is capable to calculate and include totals in the resulting data view. */ canCalculateTotals?: boolean; /** * Indicates whether the backend is capable to calculate and include grand totals in the resulting data view. */ canCalculateGrandTotals?: boolean; /** * Indicates whether the backend is capable to calculate and include subtotals in the resulting data view. */ canCalculateSubTotals?: boolean; /** * Indicates whether the backend is capable to calculate and include native totals (aka rollups) in the resulting data view. */ canCalculateNativeTotals?: boolean; /** * Indicates whether the backend is capable to sort the result data view. */ canSortData?: boolean; /** * Indicates whether the backend can recognize attribute elements by URI. */ supportsElementUris?: boolean; /** * Indicates maximum result dimensions that the backend is able to produce. */ maxDimensions?: number; /** * Indicates whether backend can export data to CSV file. */ canExportCsv?: boolean; /** * Indicates whether backend can export data to Excel. */ canExportXlsx?: boolean; /** * Indicates whether backend can transform an existing result into a different shape / sorting / totals. */ canTransformExistingResult?: boolean; /** * Indicates whether backend can execute an existing, persistent insight by reference. */ canExecuteByReference?: boolean; /** * Indicates whether backend supports adding CSV datasets and switching between them. */ supportsCsvUploader?: boolean; /** * Indicates whether backend supports ranking filters. */ supportsRankingFilter?: boolean; /** * Indicates whether backend supports ranking filters in combination with measure value filters (in the same execution). */ supportsRankingFilterWithMeasureValueFilter?: boolean; /** * Indicates whether backend supports element query parent filtering. */ supportsElementsQueryParentFiltering?: boolean; /** * Indicates whether backend supports a special dashboard-specific KPI Widget. */ supportsKpiWidget?: boolean; /** * Indicates whether backend supports Widget as standalone addressable entity. */ supportsWidgetEntity?: boolean; /** * Indicates whether backend supports hyperlink attribute labels. */ supportsHyperlinkAttributeLabels?: boolean; /** * Indicates whether backend supports returning of the valid elements (values) for generic date attributes (Day of Week, Month of Year, etc.). */ supportsGenericDateAttributeElements?: boolean; /** * Indicates whether backend supports downloading of files that will be used for debugging. * Indicates whether backend supports retrieving of data that will be used for debugging. */ supportsExplain?: boolean; /** * Indicates whether backend's identifiers are scoped to a type. * * @remarks * They are unique only on type level. When working with backend that has type scoped identifiers it is essential to provide * both `identifier` and `type` when using `IdentifierRef`. * * If not specified then assume identifiers do not require `type` information in order to exactly identify an object. */ hasTypeScopedIdentifiers?: boolean; /** * Indicates whether backend supports control of access to the MD objects */ supportsAccessControl?: boolean; /** * Indicates whether backend supports only strict access control. * * @remarks * It means that no one without proper permissions is able to get restricted MD object even knowing its URI. */ usesStrictAccessControl?: boolean; /** * Indicates whether backend supports filtering object by owner/creator. */ supportsOwners?: boolean; /** * Indicates whether backend allows objects with damaged references. */ allowsInconsistentRelations?: boolean; /** * Indicates whether backend supports time granularities (gdc.time.minute, gdc.time.hour); */ supportsTimeGranularities?: boolean; /** * Indicates whether backend supports hierarchical workspaces */ supportsHierarchicalWorkspaces?: boolean; /** * Indicates whether backend supports custom color palettes. */ supportsCustomColorPalettes?: boolean; /** * Indicates whether backend supports organization settings. */ supportsOrganizationSettings?: boolean; /** * Indicates whether backend supports inline measures in execution. */ supportsInlineMeasures?: boolean; /** * Indicates whether backend supports bootstrap resource that returns initial app data. */ supportsBootstrapResource?: boolean; /** * Indicates whether backends supports locking of metadata objects that prevents their edit by other * users than admins. */ supportsMetadataObjectLocking?: boolean; /** * Indicates whether backend supports granular access controls of metadata objects or if permissions * are tied to the user role. */ supportsGranularAccessControl?: boolean; /** * Indicates whether backend supports virtual "Everyone" group that is used when we want * to assign permissions for all current and future users of the platform. */ supportsEveryoneUserGroupForAccessControl?: boolean; /** * Indicates whether backend supports non production data sets. */ supportsNonProductionDatasets?: boolean; /** * Indicates whether backend supports executions listing all attribute values */ supportsShowAllAttributeValues?: boolean; /** * Indicates whether backend supports separate numerical labels (display forms) for geo chart's latitude and longitude. * If false, string label with "latitude;longitude" values is expected. */ supportsSeparateLatitudeLongitudeLabels?: boolean; /** * Indicates whether backends supports displaying message to inform workspace managers about having * access to the shared object. */ canWorkspaceManagerSeeEverySharedObject?: boolean; /** * Indicates whether dackend supports enumerating datetime attributes. */ supportsEnumeratingDatetimeAttributes?: boolean; /** * Indicates whether the UI supports hidden and locked filters. * * If set to true, the user interface (UI) provides functionality for managing hidden * and locked filters. If set to false or undefined, the UI does not support these features. */ supportsHiddenAndLockedFiltersOnUI?: boolean; /** * Indicates whether the UI supports multiple interactions per attribute and measure. * * IF set to true, the user interface (UI) provides functionality for managing multiple interactions per attribute and measure. * If set to false or undefined, the UI does not support these features. */ allowMultipleInteractionsPerAttributeAndMeasure?: boolean; /** * Indicates whether the UI supports attribute hierarchies. * * If set to true, the user interface (UI) provides functionality for managing attribute hierarchies * If set to false or undefined, the UI does not support attribute hierarchies features. */ supportsAttributeHierarchies?: boolean; /** * Indicates whether backend supports setting connecting attribute in dependent filters. */ supportsSettingConnectingAttributes?: boolean; /** * Indicates whether backend supports to keep selection of dependent filters. */ supportsKeepingDependentFiltersSelection?: boolean; /** * Indicates whether backend supports to circular dependencies in dependent filters. */ supportsCircularDependencyInFilters?: boolean; /** * Indicates whether backend supports to show elements filtered out by limiting filters. */ supportsShowingFilteredElements?: boolean; /** * Indicates whether backend supports to set dependencies for single-select filters. */ supportsSingleSelectDependentFilters?: boolean; /** * Indicates whether backend supports cross filtering. */ supportsCrossFiltering?: boolean; /** * Indicates whether backend supports to have multiple date filters. */ supportsMultipleDateFilters?: boolean; /** * Indicates whether backend supports limiting of attribute filter elements by a metric, attribute, fact. */ supportsAttributeFilterElementsLimiting?: boolean; /** * Indicates whether backend supports limiting of attribute filter elements by dependent date filters. */ supportsAttributeFilterElementsLimitingByDependentDateFilters?: boolean; /** * Indicates whether backend supports rich text widgets. */ supportsRichTextWidgets?: boolean; /** * Catchall for additional capabilities */ [key: string]: undefined | boolean | number | string; } /** * Parsed {@link https://help.gooddata.com/pages/viewpage.action?pageId=86795279 | MAQL} bracket. * * @remarks * See {@link IMeasureExpressionToken} for more information. * * @public */ export declare interface IBracketExpressionToken { /** * Expression token type */ type: "bracket"; /** * Plain text */ value: string; } /** * Interface that implements aborting of requests * * @beta */ export declare interface ICancelable { /** * @param signal - Abort signal used for canceling requests * @returns Instance of object with interface */ withSignal(signal: AbortSignal | undefined): T; } /** * @internal * * Change analysis period definition */ export declare interface IChangeAnalysisDefinition { /** * Analyzed measure definition */ measure: IMeasure; /** * All related measures to analyzed measure */ auxMeasures?: IMeasure[]; /** * All attributes to run analysis for */ attributes?: IAttribute[]; /** * All applied filters */ filters?: IFilter[]; } /** * @internal * * Change analysis options */ export declare interface IChangeAnalysisOptions { /** * Only objects with these tags will be included */ includeTags?: string[]; /** * Only objects without these tags will be included */ excludeTags?: string[]; } /** * @internal * * Change analysis period definition */ export declare interface IChangeAnalysisPeriod { /** * Date attribute reference */ dateAttribute: IAttribute; /** * Granularity for date attribute, its necessary for date conversion */ granularity: DateAttributeGranularity; /** * From date - ISO date format */ from: string; /** * To date - ISO date format */ to: string; } /** * @internal */ export declare interface IChangeAnalysisResults { /** * To period metric value */ toValue?: number; /** * From period metric value */ fromValue?: number; /** * List of all key drivers */ keyDrivers: IKeyDriver[]; } /** * GenAI Chat Conversation. * @internal */ export declare type IChatConversation = { /** * Conversation id */ id: string; /** * Conversation creation date */ createdAt: string; /** * Conversation last update date */ updatedAt: string; /** * Conversation title */ title?: string; /** * Conversation pinned status */ pinned?: boolean; /** * Agent id used by this conversation. */ agentId?: string; }; /** * GenAI Chat Conversation proposal content * @internal */ export declare type IChatConversationAlertProposalContent = { type: "alertProposal"; alertProposal?: IAlertProposal; }; /** * One memory item the turn injected. * @internal */ export declare type IChatConversationAppliedMemoryItem = { title: string; strategy: GenAIAppliedMemoryStrategy; /** Relevance of the item, when it was selected by relevance. Absent for `always` items. */ score?: number; }; /** * Details of an `applyMemory` action. * @internal */ export declare type IChatConversationApplyMemoryDetail = { category: "applyMemory"; /** Memory items injected into the turn's prompt, in retrieval order. */ items: IChatConversationAppliedMemoryItem[]; /** Duration of the memory retrieval. */ durationMs?: number; }; /** * Details of a `catalogSearch` action. * @internal */ export declare type IChatConversationCatalogSearchDetail = { category: "catalogSearch"; /** Keywords the search looked for. */ query: string[]; /** Catalog types the search asked for. */ requestedTypes: string[]; /** Titles the search returned, grouped by object type. */ found: IChatConversationSearchedGroup[]; /** Best-matching object per type. Empty when the search does not rank results. */ used: IChatConversationCatalogSearchMatch[]; }; /** * Best-matching catalog object of a single object type. * @internal */ export declare type IChatConversationCatalogSearchMatch = { objectType: string; title: string; score: number; }; /** * Details of a `composeAnswer` action. * @internal */ export declare type IChatConversationComposeAnswerDetail = { category: "composeAnswer"; /** Model that generated the answer. */ modelId?: string; /** Number of follow-up actions the answer offered. */ suggestedActions?: number; /** Type of the output the turn produced. */ output?: GenAIAnswerOutput; }; /** * GenAI Chat Conversation content * @internal */ export declare type IChatConversationContent = IChatConversationTextContent | IChatConversationReasoningContent | IChatConversationMultipartContent | IChatConversationToolCallContent | IChatConversationToolResultContent; /** * Options for creating a chat conversation. * * @internal */ export declare type IChatConversationCreateOptions = { /** * Agent id to use for the conversation. */ agentId?: string; }; /** * GenAI Chat Conversation dashboard content * @internal */ export declare type IChatConversationDashboardContent = { type: "dashboard"; dashboard: IDashboard | null; insights: IInsight[] | null; saved: boolean; }; /** * GenAI Chat Conversation error. * @internal */ export declare type IChatConversationError = { type: "error"; code: number; message: string; traceId?: string; reason?: (string & {}) | "METADATA_SYNC_IN_PROGRESS" | "METADATA_SYNC_REQUEST_ERROR" | "MODEL_NOT_COMPATIBLE"; }; /** * Feedback for a chat conversation item. * @internal */ export declare type IChatConversationFeedback = { type: "feedback"; feedback: GenAIChatInteractionUserFeedback; text?: string; createdAt: number; updatedAt: number; error?: string; }; /** * A single interaction step of a conversation turn. Conversation items link to it via `stepId`. * @internal */ export declare type IChatConversationInteractionStep = { /** Discriminator for the message stream. */ type: "interaction_step"; stepId: string; conversationId: string; responseId: string; /** Zero-based step order within the turn. */ stepIndex: number; /** Duration of the step. */ durationMs: number; tokens: IChatConversationInteractionStepTokens; /** Step start timestamp. */ createdAt: number; /** Backend trace id of the response this step belongs to, for support/debugging. */ traceId?: string; }; /** * Token usage of an interaction step. * @internal */ export declare type IChatConversationInteractionStepTokens = { input?: number; output?: number; total?: number; }; /** * GenAI Chat Conversation item * @internal */ export declare type IChatConversationItem = { id: string; type: "item"; responseId: string; replyTo?: string; createdAt: number; role: "user" | "assistant" | "tool" | "system"; content: IChatConversationContent; feedback?: IChatConversationFeedback; /** * Id of the interaction step this item belongs to. */ stepId?: string; /** * Details of the item's action. */ detail?: IChatConversationItemDetail; /** * Id of the agent the conversation was switched to. Only set on system items * that represent an agent-switch event. */ agentId?: string; /** * Id of the agent the conversation was switched from, when known. */ oldAgentId?: string; /** * Effort the message was sent with. Only set on user items that carried one. */ reasoningEffort?: GenAIChatEffort; }; /** * Details of a conversation item's action, discriminated by `category`. * @internal */ export declare type IChatConversationItemDetail = IChatConversationApplyMemoryDetail | IChatConversationCatalogSearchDetail | IChatConversationComposeAnswerDetail | IChatConversationKnowledgeSearchDetail | IChatConversationMetricQueryDetail | IChatConversationSkillRoutingDetail; /** * Service to query conversations items. * * @public */ export declare interface IChatConversationItemsQuery { /** * Sets number of memory items to return per page. * Default size: 50 * * @param size - desired max number of memory items per page must be a positive number * @returns memory items query */ withSize(size: number): IChatConversationItemsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns memory items query */ withPage(page: number): IChatConversationItemsQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Conversations items query result. * @internal */ export declare type IChatConversationItemsQueryResult = IPagedResource; /** * GenAI Chat Conversation key driver content * @internal */ export declare type IChatConversationKeyDriverAnalysisContent = { type: "kda"; kda: IChatKdaDefinition; }; /** * Details of a `knowledgeSearch` action. * @internal */ export declare type IChatConversationKnowledgeSearchDetail = { category: "knowledgeSearch"; /** What the action searched for. */ query?: string; /** Documents the action reached, best-scoring first. */ documents: IChatConversationKnowledgeSearchDocument[]; /** Title of the highest-scoring document. */ bestMatch?: string; }; /** * A knowledge document reached by an action. * @internal */ export declare type IChatConversationKnowledgeSearchDocument = { /** Document title, or its filename when it has none. */ title: string; /** Relevance score of the document. */ score?: number; }; /** * Details of a `metricQuery` action: what the query asked the data for, or how much came back. * * A single query surfaces as two of these — one for the request, one for the execution that ran * it — paired by `ref`, so the fields of either half are absent on the other. * @internal */ export declare type IChatConversationMetricQueryDetail = { category: "metricQuery"; /** * Internal handle pairing the query that built a visualization with the execution that ran * it. Never displayed. Absent on a query that was rejected, which has no partner. */ ref?: string; /** References of the metrics the query measured, as the query wrote them. */ metrics: string[]; /** References of the attributes and date dimensions the query grouped by. */ groupedBy: string[]; /** References of what the query filtered on. The conditions themselves are not carried. */ filteredBy: string[]; /** Title the query gave its visualization. */ visualization?: string; /** Rows the execution returned. */ resultRows?: number; /** Columns the execution returned. */ resultColumns?: number; }; /** * GenAI Chat Conversation multipart content * @internal */ export declare type IChatConversationMultipartContent = { type: "multipart"; parts: IChatConversationMultipartPart[]; suggestions?: IChatSuggestions; }; /** * GenAI Chat Conversation multipart content * @internal */ export declare type IChatConversationMultipartPart = IChatConversationTextContent | IChatConversationVisualisationContent | IChatConversationAlertProposalContent | IChatConversationKeyDriverAnalysisContent | IChatConversationWhatIfContent | IChatConversationSearchContent | IChatConversationDashboardContent; /** * GenAI Chat Conversation reasoning content * @internal */ export declare type IChatConversationReasoningContent = { type: "reasoning"; summary: string; }; /** * GenAI Chat Conversations. * @internal */ export declare interface IChatConversations { /** * Get conversations items query. */ getConversationItemsQuery(): IChatConversationItemsQuery; /** * Create a new conversation. */ create(options?: IChatConversationCreateOptions): Promise; /** * Updates the specified chat conversation with the provided updates. */ update(conversationId: string, update: Partial>): Promise; /** * Switches the agent used by the specified chat conversation. */ switchAgent(conversationId: string, agentId: string): Promise; /** * Delete a conversation. */ delete(conversationId: string): Promise; /** * Generate title for a conversation. */ generateTitle(conversationId: string): Promise; /** * Get conversation by id. */ getConversation(conversationId: string): Promise; /** * Get conversation thread by id. */ getConversationThread(conversationId: string): IChatConversationThread; } /** * GenAI Chat Conversation search content * @internal */ export declare type IChatConversationSearchContent = { type: "searchResults"; searchResults: ISemanticSearchResultItem[]; relationships: ISemanticSearchRelationship[]; keywords: string[]; }; /** * Catalog search results of a single object type. * @internal */ export declare type IChatConversationSearchedGroup = { objectType: string; titles: string[]; }; /** * Details of a `skillRouting` action. * @internal */ export declare type IChatConversationSkillRoutingDetail = { category: "skillRouting"; /** Titles of the skills the model could choose from. */ available: string[]; /** Titles of the skills the action activated. */ activated: string[]; }; /** * GenAI Chat Conversation text content * @internal */ export declare type IChatConversationTextContent = { type: "text"; text: string; }; /** * Chatbot conversations thread. * @internal */ export declare interface IChatConversationThread { /** * Load chat conversation history */ loadHistory(options?: { signal?: AbortSignal; }): Promise; /** * Reset the chat thread history. */ reset(): Promise; /** * Save user feedback for the interaction. */ saveFeedback(responseId: string, feedback: GenAIChatInteractionUserFeedback, userTextFeedback?: string): Promise; /** * Save user visualization for the interaction. */ resaveVisualisation(oldVisualizationId: string, newVisualizationId: string): Promise; /** * Add a user message to the chat thread. */ query(userMessage: string): IChatConversationThreadQuery; } /** * Chatbot conversation thread query builder. * @internal */ export declare interface IChatConversationThreadQuery { /** * Define the limit for the number of search results returned by the chat thread. */ withSearchLimit(searchLimit: number): IChatConversationThreadQuery; /** * Define the limit for the number of created visualization returned by the chat thread. */ withCreateLimit(createLimit: number): IChatConversationThreadQuery; /** * Define the user context for the chat thread. * For example, what dashboard the user is currently looking at. */ withUserContext(userContext: IGenAIUserContext): IChatConversationThreadQuery; /** * Define the object types for the chat thread. */ withObjectTypes(objectTypes?: GenAIObjectType[]): IChatConversationThreadQuery; /** * Define allowed relationships for search queries in search */ withAllowedRelationshipTypes(relationshipTypes?: IAllowedRelationshipType[]): IChatConversationThreadQuery; /** * Sets the include tags */ withIncludeTags(includeTags?: string[]): IChatConversationThreadQuery; /** * Sets the exclude tags */ withExcludeTags(excludeTags?: string[]): IChatConversationThreadQuery; /** * Define how much effort the LLM should spend reasoning about this message. */ withEffort(effort?: GenAIChatEffort): IChatConversationThreadQuery; /** * Execute the chat thread and stream the results. */ stream(): ReadableStream; } /** * GenAI Chat Conversation tool call content * @internal */ export declare type IChatConversationToolCallContent = { type: "toolCall"; id: string; callId: string; name: string; arguments: object; }; /** * GenAI Chat Conversation tool result content * @internal */ export declare type IChatConversationToolResultContent = { type: "toolResult"; callId: string; result: string | object; }; /** * GenAI Chat Conversation tool result content * @internal */ export declare type IChatConversationVisualisationContent = { type: "visualization"; visualization: IInsight | null; }; /** * GenAI Chat Conversation what if content * @internal */ export declare type IChatConversationWhatIfContent = { type: "whatIf"; whatIf: IChatWhatIfDefinition; }; /** * GenAI Chat Conversation key driver analysis definition * @internal */ export declare interface IChatKdaDefinition { measure: IMeasure; analyzedPeriod: string; referencePeriod: string; dateAttribute: IAttribute; dateGranularity: DateAttributeGranularity; filters: Array; } /** * Chat conversation user feedback. * @internal */ export declare type IChatSuggestion = { label: string; query: string; }; /** * Represents AI-generated suggestions, which may include a follow-up question * and a list of actions with associated labels and queries. * @internal * */ export declare type IChatSuggestions = { followUpQuestion?: string; actions?: IChatSuggestion[]; }; /** * Chatbot thread. * @beta */ export declare interface IChatThread { /** * Load chat history for the chat thread. */ loadHistory(fromInteractionId?: string, options?: { signal?: AbortSignal; }): Promise; /** * Reset the chat thread history. */ reset(): Promise; /** * Save user feedback for the interaction. */ saveUserFeedback(interactionId: string, feedback: GenAIChatInteractionUserFeedback, userTextFeedback?: string): Promise; /** * Save user feedback for the interaction. */ saveUserVisualisation(interactionId: string, visualization: GenAIChatInteractionUserVisualisation): Promise; /** * Save render visualisation status for the interaction. */ saveRenderVisualisationStatus(interactionId: string, status: "SUCCESSFUL" | "UNEXPECTED_ERROR" | "TOO_MANY_DATA_POINTS" | "NO_DATA" | "NO_RESULTS"): Promise; /** * Add a user message to the chat thread. */ query(userMessage: string): IChatThreadQuery; } /** * Chatbot thread history. * @beta */ export declare interface IChatThreadHistory { interactions: IGenAIChatInteraction[]; threadId: string; } /** * Chatbot thread query builder. * @beta */ export declare interface IChatThreadQuery { /** * Define the limit for the number of search results returned by the chat thread. */ withSearchLimit(searchLimit: number): IChatThreadQuery; /** * Define the limit for the number of created visualization returned by the chat thread. */ withCreateLimit(createLimit: number): IChatThreadQuery; /** * Define the user context for the chat thread. * For example, what dashboard the user is currently looking at. */ withUserContext(userContext: IGenAIUserContext): IChatThreadQuery; /** * Define the object types for the chat thread. */ withObjectTypes(objectTypes?: GenAIObjectType[]): IChatThreadQuery; /** * Define allowed relationships for search queries in search */ withAllowedRelationshipTypes(relationshipTypes?: IAllowedRelationshipType[]): IChatThreadQuery; /** * Execute the chat thread. */ query(options?: { signal?: AbortSignal; }): Promise; /** * Execute the chat thread and stream the results. */ stream(): ReadableStream; } /** * A metric adjustment within a what-if scenario. * @internal */ export declare interface IChatWhatIfAdjustment { /** * Reference to the metric updated object. */ ref: ObjRef; /** * MAQL expression to use as the scenario override. */ scenarioMaql: string; } /** * GenAI Chat Conversation what if definition * @internal */ export declare interface IChatWhatIfDefinition { /** * List of what-if scenarios. */ scenarios: IChatWhatIfScenario[]; /** * Whether to include the baseline (unmodified) visualization. */ includeBaseline?: boolean; } /** * A single what-if scenario. * @internal */ export declare interface IChatWhatIfScenario { /** * Display label for the scenario. */ label: string; /** * Metric adjustments for this scenario. */ adjustments: IChatWhatIfAdjustment[]; } /** * @alpha */ export declare interface IClusteringConfig { /** * Number of clusters - e.g. 3 */ numberOfClusters: number; /** * Threshold for clustering - e.g. 0.03 */ threshold?: number; } /** * @alpha */ export declare interface IClusteringResult { attribute: string[]; clusters: Array; xcoord: Array; ycoord: Array; } /** * Configuration for retrieving collection items (geospatial features). * @alpha */ export declare interface ICollectionItemsConfig { /** * Collection identifier. */ collectionId: string; /** * Kind of geo collection - STATIC (default) or CUSTOM. * STATIC collections use /api/v1/location/collections/\{collectionId\}/items * CUSTOM collections use /api/v1/location/custom/collections/\{collectionId\}/items */ kind?: GeoCollectionKind; /** * List of values to filter features by. */ values?: string[]; /** * Maximum number of features to return. */ limit?: number; /** * Bounding box filter (minx,miny,maxx,maxy). */ bbox?: string; } /** * Result from collection items retrieval containing GeoJSON features. * @alpha */ export declare interface ICollectionItemsResult { /** * Collection type (typically "FeatureCollection"). */ type: string; /** * List of GeoJSON features. */ features: IGeoJsonFeature[]; /** * Optional bounding box for all features. */ bbox?: number[]; } /** * Parsed {@link https://help.gooddata.com/pages/viewpage.action?pageId=86795279 | MAQL} comment text. * * @remarks * See {@link IMeasureExpressionToken} for more information. * * @public */ export declare interface ICommentExpressionToken { /** * Expression token type */ type: "comment"; /** * Plain text */ value: string; } /** * Request payload for creating a knowledge document. * * Note: Uses the browser `File` API. This interface is only intended * for browser-based consumers. * * @internal */ export declare interface ICreateKnowledgeDocumentRequest { file: File; } /** * Options for exporting dashboard to png format * * @alpha */ export declare interface IDashboardExportImageOptions extends IDashboardExportTimezoneOptions { /** * Widgets to export. If not provided, all widgets will be exported. */ widgetIds?: ObjRef[]; /** * Filename for the export. If not provided, the dashboard title will be fetched. */ filename?: string; /** * Per-tab parameter runtime-overrides applied when rendering the exported image. * Keyed by tab `localIdentifier`; a widget-scoped export carries the single owning tab. * Mirrors `dashboardTabsParametersOverrides` on the tabular options. */ parametersByTab?: Record; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; } /** * Options for exporting dashboard to PDF format * * @alpha */ export declare interface IDashboardExportPdfOptions extends IDashboardExportTimezoneOptions { /** * Filename for the export. If not provided, the dashboard title will be fetched. */ filename?: string; /** * Custom export metadata forwarded through the export flow. */ exportMetadata?: Record; /** * Per-tab parameter runtime-overrides applied when rendering the exported file. Keyed by tab * `localIdentifier`. Mirrors `dashboardTabsParametersOverrides` on the tabular options. */ parametersByTab?: Record; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; } /** * Options for exporting a dashboard to a presentation. * * @beta */ export declare interface IDashboardExportPresentationOptions extends IDashboardExportTimezoneOptions { widgetIds?: ObjRef[]; visualizationIds?: ObjRef[]; templateId?: string; title?: string; hideWidgetTitles?: boolean; filename?: string; exportMetadata?: Record; /** * Per-tab parameter runtime-overrides applied when rendering the exported slides. * Keyed by tab `localIdentifier`; a widget-scoped export carries the single owning tab. * Mirrors `dashboardTabsParametersOverrides` on the tabular options. */ parametersByTab?: Record; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; } /** * Options for exporting dashboard to raw data * * @alpha */ export declare interface IDashboardExportRawOptions extends IDashboardExportTimezoneOptions { /** * CSV delimiter to use for the exported file. */ delimiter?: string; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; } /** * Options for exporting dashboard to tabular format. * * @alpha */ export declare interface IDashboardExportTabularOptions extends IDashboardExportTimezoneOptions { /** * Title for the export. If not provided, the dashboard title will be fetched. */ title?: string; /** * Export format. Defaults to "XLSX" if not specified. */ format?: "XLSX" | "PDF"; /** * If true, the headers will be merged into a single row */ mergeHeaders?: boolean; /** * If true, the export info will be included in the file */ exportInfo?: boolean; /** * Widgets to export. If not provided, all widgets will be exported. */ widgetIds?: string[]; /** * If true, the dashboard filters will be applied to the exported dashboard */ dashboardFiltersOverride?: FilterContextItem[]; /** * Override stored dashboard filters per tab with custom filters */ dashboardTabsFiltersOverrides?: FiltersByTab; /** * Per-tab parameter overrides. Key is tabId; values drive AFM execution and info-sheet rendering * for that tab's sub-export. Mirrors `dashboardTabsFiltersOverrides`. */ dashboardTabsParametersOverrides?: Record; /** * PDF-specific configuration options. Only applicable when format is "PDF". */ pdfConfiguration?: { pageSize?: "A3" | "A4" | "LETTER"; pageOrientation?: "PORTRAIT" | "LANDSCAPE"; showInfoPage?: boolean; }; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; } /** * Export options shared by every dashboard export type. * * @alpha */ export declare interface IDashboardExportTimezoneOptions { /** * Concrete IANA timezone ID used to resolve relative date filters and render date/time values * in the export. Overrides the workspace/user timezone settings. */ timezoneId?: string; } /** * Dashboard referenced objects * @alpha */ export declare interface IDashboardReferences { /** * Referenced insights. Empty if no insights on dashboard or referenced insights were not requested. */ insights: IInsight[]; /** * Referenced plugins. Empty if no plugins on dashboard or referenced plugins were not requested. */ plugins: IDashboardPlugin[]; /** * Referenced dataSets. Only direct references, does not include dataSets linked from filter context. */ dataSets?: IDataSetMetadataObject[]; } /** * Service to query dashboards. * * @public */ export declare interface IDashboardsQuery { /** * Sets number of dashboards to return per page. * Default size: 50 * * @param size - desired max number of dashboards per page must be a positive number * @returns dashboards query */ withSize(size: number): IDashboardsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns dashboards query */ withPage(page: number): IDashboardsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns dashboards query */ withFilter(filter: IFilterBaseOptions): IDashboardsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns dashboards query */ withSorting(sort: string[]): IDashboardsQuery; /** * Sets include for the query. * * @param include - include to apply * @returns dashboards query */ withInclude(include: string[]): IDashboardsQuery; /** * Sets meta include for the query. * * @param metaInclude - meta include to apply * @returns dashboards query */ withMetaInclude(metaInclude: string[]): IDashboardsQuery; /** * Sets origin for the query. * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns dashboards query */ withOrigin(origin: ObjectOrigin | (string & {})): IDashboardsQuery; /** * Selects which backend endpoint flavor to use when listing dashboards. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns dashboards query * @beta */ withMethod(method: QueryMethod): IDashboardsQuery; /** * Starts the dashboards query. * * @returns promise of first page of the results */ query(): Promise; } /** * Queried dashboards are returned in a paged representation. * * @public */ export declare type IDashboardsQueryResult = IPagedResource; /** * Response payload for AI dashboard summarization. * @beta */ export declare interface IDashboardSummary { summary: string; filterContext: FilterContextItem[]; visualizationsIncluded: IDashboardSummaryIncludedVisualization[]; visualizationsExcluded: IDashboardSummaryExcludedVisualization[]; generatedAt: string; /** * Identifier of the dashboard tab the summary was generated for, when a tab was requested. */ tabId?: string; } /** * A visualization excluded from the AI dashboard summary, along with the reason. * @beta */ export declare interface IDashboardSummaryExcludedVisualization { visualizationId: string; reason: string; title?: string | null; } /** * A visualization included in the AI dashboard summary. * @beta */ export declare interface IDashboardSummaryIncludedVisualization { visualizationId: string; title?: string | null; } /** * Request payload for AI dashboard summarization. * @beta */ export declare interface IDashboardSummaryRequest { dashboardId: string; /** * Visualizations to include in the summary. `null` means include all visualizations on the dashboard. * Omit to let the backend decide. */ visualizations?: string[] | null; /** * Filter context to apply when generating the summary. `null` means use all dashboard filters. * Omit to let the backend decide. */ filterContext?: FilterContextItem[] | null; /** * Identifier of the dashboard tab to summarize. Omit to summarize the whole dashboard. */ tabId?: string | null; /** * Hint describing the desired output format of the generated summary. * Use it as an additional prompt. */ formatHint?: string | null; } /** * Result returned when the dashboard summary workflow is started. * * @internal */ export declare interface IDashboardSummaryWorkflowStartResult { runId: string; status: DashboardSummaryWorkflowStatus; message: string; } /** * Result returned when querying the dashboard summary workflow status. * * @internal */ export declare interface IDashboardSummaryWorkflowStatusResult extends IDashboardSummaryWorkflowStartResult { result?: Record | null; error?: string | null; currentPhase?: "extraction" | "data_validation" | "ai_generation" | "guardrail_validation" | "complete" | null; } /** * Dashboard with referenced objects * @alpha */ export declare interface IDashboardWithReferences { dashboard: IDashboard; references: IDashboardReferences; } /** * The service that returns information about data filters. * * Supports both Workspace Data Filters and User Data Filters. * * @alpha */ export declare interface IDataFiltersService { /** * Get data filters for the current workspace with their settings. * * @deprecated - the function has been renamed, use {@link IDataFiltersService#getDataFilters} instead * @alpha */ getWorkspaceDataFilters(): Promise; /** * Get data filters for the current workspace with their settings. */ getDataFilters(): Promise; /** * Create a new data filter (without setting). */ createDataFilter(newDataFilter: IWorkspaceDataFilterDefinition): Promise; /** * Update an existing data filter. * The setting is not updated, only the data filter. */ updateDataFilter(updatedDataFilter: IWorkspaceDataFilter): Promise; /** * Update value of existing data filter. */ updateDataFilterValue(dataFilter: ObjRef, values: string[]): Promise; /** * Delete an existing data filter. */ deleteDataFilter(ref: ObjRef): Promise; /** * Get all user data filters for the current workspace. */ getUserDataFilters(): Promise; /** * Create a new user data filter. */ createUserDataFilter(newUserDataFilter: UserDataFilterDefinition): Promise; /** * Update an existing user data filter. */ updateUserDataFilter(updatedUserDataFilter: UserDataFilter): Promise; /** * Delete an existing user data filter. */ deleteUserDataFilter(ref: ObjRef): Promise; } /** * Service to query datasets. * * @beta */ export declare interface IDatasetsQuery { /** * Sets number of datasets to return per page. * Default size: 50 * * @param size - desired max number of datasets per page must be a positive number * @returns datasets query */ withSize(size: number): IDatasetsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns datasets query */ withPage(page: number): IDatasetsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns datasets query */ withFilter(filter: IDatasetsQueryFilterOptions): IDatasetsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns datasets query */ withSorting(sort: string[]): IDatasetsQuery; /** * Sets include for the query. * * @param include - include to apply * @returns datasets query */ withInclude(include: string[]): IDatasetsQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns datasets query */ withOrigin(origin: ObjectOrigin | (string & {})): IDatasetsQuery; /** * Selects which backend endpoint flavor to use when listing datasets. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns datasets query * @beta */ withMethod(method: QueryMethod): IDatasetsQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Datasets-specific filter options. * * @beta */ export declare interface IDatasetsQueryFilterOptions extends IFilterBaseOptions { /** * Dataset type to include (e.g. "DATE" for date datasets). * * @beta */ dataSetType?: "DATE" | "NORMAL"; } /** * Queried datasets are returned in a paged representation. * * @beta */ export declare type IDatasetsQueryResult = IPagedResource; /** * Service to work with data sources * * @alpha */ export declare interface IDataSourcesService { /** * Returns data source identifiers */ getDataSourceIdentifiers(): Promise; } /** * The body of the error indicating that some of the data involved in the request was too large. * * @alpha */ export declare interface IDataTooLargeResponseBody { /** * Additional details about the error in a structured form. */ structuredDetail?: IDataTooLargeResponseBodyStructuredDetail; } /** * Information about a particular limit that was broken. * * @alpha * @privateRemarks The generic type of the limitType property is useful when filtering the items per type. */ export declare interface IDataTooLargeResponseBodyLimitBreak { /** * Type of the limit broken. */ limitType: TLimitBreakType; /** * The limit value. */ limit: number; /** * The actual value that broke the limit. */ actualValue: number; } /** * Additional details about the DataTooLarge error in a structured form. * * @alpha */ export declare interface IDataTooLargeResponseBodyStructuredDetail { /** * Structured information about which limits were broken. */ limitBreaks?: IDataTooLargeResponseBodyLimitBreak[]; } /** * A view on the calculated data. * * @remarks * * See also the `{@link @gooddata/sdk-ui#DataViewFacade}`. This wrapper on top of this raw IDataView can be used to work * with the data in a way more convenient fashion. * * @public */ export declare interface IDataView { /** * Coordinates of where this data view starts. One coordinate per result dimension. */ readonly offset: number[]; /** * Count of data in each dimension. */ readonly count: number[]; /** * Total size of data in each dimension. */ readonly totalCount: number[]; /** * Headers are metadata for the data in this view. * * @remarks * There are headers for each dimension and in * each dimension headers are further sliced by the attribute or measure or total to which the data * belongs. * * Thus: * * - Top array contains 0 to N per-dimension arrays, one for each requested dimension (if any) * - The per-dimension arrays then contain per-slice array, one for each attribute or measure in the dimension * - The per-slice-array then contains the actual result header which includes information such as attribute element * or measure name */ readonly headerItems: IResultHeader[][][]; /** * The calculated data. Dimensionality of the data matches the dimensions requested at execution time. */ readonly data: DataValue[][] | DataValue[]; /** * Grand totals included in this data view. * * @remarks * Grand totals are included for each dimension; within each * dimension there is one entry per requested total and for each requested total there are list of values. * * Thus: * * - Top array contains 0 to N per-dimension arrays * - Each per-dimension array contains one per-total entry for each requested total * - Each per-total entry contains array of calculated values, cardinality of this matches the cardinality * of the data in the respective dimension. */ readonly totals?: DataValue[][][]; /** * Totals of grand totals included in this data view. */ readonly totalTotals?: DataValue[][][]; /** * Full definition of execution that computed data included in this DataView. */ readonly definition: IExecutionDefinition; /** * Result of the execution that calculated data for this view. */ readonly result: IExecutionResult; /** * Execution context metadata available on this data view. */ readonly context?: IExecutionContext; /** * Additional metadata for the particular execution result. * @alpha */ readonly metadata: IExecutionResultMetadata; /** * Configuration for the forecasting, if available. * @beta */ readonly forecastConfig?: IForecastConfig; /** * Forecasting result, if available. * @beta */ readonly forecastResult?: IForecastResult; /** * Configuration for the outliers, if available. * @alpha */ readonly outliersConfig?: IOutliersConfig; /** * Outliers result, if available. * @alpha */ readonly outliersResult?: IOutliersResult; /** * Configuration for the clustering, if available. * @beta */ readonly clusteringConfig?: IClusteringConfig; /** * Clustering result, if available. * @beta */ readonly clusteringResult?: IClusteringResult; /** * Result warnings. * * @remarks * Backend MAY return warnings to indicate that the result is different compared to what the caller can expect. * For example, the caller executes a definition with particular filter, * but the backend determines that the filter has no effect on the computation. * Backend runs the execution and communicates by warning that the filter was useless. */ readonly warnings?: IResultWarning[]; /** * Tests if this data view is same as the other data view. * * @param other - other data view * @returns true if equal, false if not */ equals(other: IDataView): boolean; /** * Unique fingerprint of this data view. * * @remarks * The fingerprint is influenced by the execution result and the * offset and limit of the data view. * * Thus, two data views on the same result, with same offset and limit will have the same fingerprint. */ fingerprint(): string; /** * Return forecast data view. This object is empty if not `withForecast` was called * @see IDataView.withForecast * @beta */ forecast(): IForecastView; /** * Return clustering data view. This object is empty if `withClustering` was not called * @see IDataView.withClustering * @beta */ clustering(): IClusteringResult; /** * Return outliers data view. This object is empty if not `withOutliers` was called * @see IDataView.withOutliers * @alpha */ outliers(): IOutliersView; /** * Adds forecast for this data view. * * @beta * @param config - forecast configuration * @param result - forecast result * @returns new data view with forecasting enabled */ withForecast(config?: IForecastConfig, result?: IForecastResult): IDataView; /** * Adds clustering for this data view. * @beta * @param config - clustering configuration * @param result - clustering result * @returns new data view with clustering enabled */ withClustering(config?: IClusteringConfig, result?: IClusteringResult): IDataView; /** * Adds outliers for this data view. * @alpha * @param config - outliers configuration * @param result - outliers result * @returns new data view with outliers enabled */ withOutliers(config?: IOutliersConfig, result?: IOutliersResult): IDataView; /** * Retrieves collection items (geospatial features) using provided configuration. * * * @param config - configuration including collection identifier and optional filters * @returns promise of collection items result with GeoJSON features * @alpha */ readCollectionItems(config: ICollectionItemsConfig): Promise; } /** * Interface that represents logical model date dataset. * @internal */ export declare interface IDateDataset { id: string; title: string; description?: string; } /** * This service provides access to workspace date filter configs (also known as extended date filters). * Date filter configs allow to define your own date filter presets, that appear in the date filter. * To make date filter configs work, you have to set enableKPIDashboardExtendedDateFilters feature flag to true. * * @alpha */ export declare interface IDateFilterConfigsQuery { /** * Sets number of date filter configs to return per page. * Default/max limit is specific per backend * * @param limit - desired max number of date filter configs per page; must be a positive number * @returns date filter configs query */ withLimit(limit: number): IDateFilterConfigsQuery; /** * Sets starting point for the query. Backend WILL return no data if the offset is greater than * total number of date filter configs * Default offset: 0 * * @param offset - zero indexed, must be non-negative * @returns date filter configs query */ withOffset(offset: number): IDateFilterConfigsQuery; /** * Starts the date filter configs query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the custom date filter confis by settings query. * * @returns promise of first page of the results */ queryCustomDateFilterConfig(): Promise; } /** * Paged result of valid element query. Last page of data returns empty items. * * @public */ export declare type IDateFilterConfigsQueryResult = IPagedResource; /** * Response returned when a knowledge document is deleted. * @internal */ export declare interface IDeleteKnowledgeDocumentResponse { success: boolean; message: string; } /** * Service to query valid attribute elements for particular display form. * * @public */ export declare interface IElementsQuery extends ICancelable { /** * Sets number of valid elements to return per page. * Default limit is specific per backend * * @param limit - desired max number of valid elements per page; must be a positive number * @returns element query */ withLimit(limit: number): IElementsQuery; /** * Sets starting point for the query. Backend WILL return no data if the offset is greater than * total number of valid elements. * Default offset: 0 * * @param offset - zero indexed, must be non-negative * @returns element query */ withOffset(offset: number): IElementsQuery; /** * Sets the attribute filters that will limit the available elements * * @param filters - attribute filters limiting the elements * @returns element query */ withAttributeFilters(filters: IElementsQueryAttributeFilter[]): IElementsQuery; /** * Sets the measures that will limit the available elements - only elements for which the measures * have data will be returned. * * @param measures - measures limiting the elements * @returns element query */ withMeasures(measures: IMeasure[]): IElementsQuery; /** * Sets the catalog objects based on which the elements are validated, i.e., if set, only the elements * that are available with these metrics, attributes, etc. are returned. * * Note that this functionality is not supported by every backend. * * @param validateBy - metric, attributes, or other objects the elements are validated by. * @returns element query */ withAvailableElementsOnly(validateBy: ObjRef[]): IElementsQuery; /** * Allows to specify advanced options for the elements query. * * @param options - advanced options * @returns element query */ withOptions(options: IElementsQueryOptions): IElementsQuery; /** * Starts the valid elements query. * * @returns promise of first page of the results */ query(): Promise; /** * Sets the date filters that will limit the available elements * * @param filters - date filters limiting the elements * @returns element query */ withDateFilters(filters: (IRelativeDateFilter | IAbsoluteDateFilter)[]): IElementsQuery; } /** * Attribute filter limiting the elements. * * @remarks * To be able to filter elements, the current attribute * and the filter attribute must be connected in the data model. The property `overAttribute` identifies * the connecting table in the logical data model. * * Not all backends support overAttribute prop. * * For method providing all possible connecting attributes see {@link IWorkspaceAttributesService.getCommonAttributes}. * For method providing whether attributes have some connection in model * see {@link IWorkspaceAttributesService.getConnectedAttributesByDisplayForm}. * * @public */ export declare interface IElementsQueryAttributeFilter { attributeFilter: IAttributeFilter; overAttribute: ObjRef; } /** * The attribute itself contains no view data, it's just a sequence of id's. * * @remarks * To get data that is useful to users, we need to represent these id's with specific values. * For this purpose, we pair the attribute with it's display form (specific representation of attribute values). * An attribute can have multiple display forms. * * @public */ export declare interface IElementsQueryFactory { /** * Query attribute elements represented by concrete display form * * @param ref - display form ref * @returns instance that can be used to query attribute elements */ forDisplayForm(ref: ObjRef): IElementsQuery; /** * Query attribute elements used by provided filter * * @param filter - resolvable filter * @param dateFilterDisplayForm - display form of resolvable filter if it is date filter * @returns instance that can be used to query attribute elements * */ forFilter(filter: FilterWithResolvableElements, dateFilterDisplayForm?: ObjRef): IFilterElementsQuery; } /** * Configuration options for querying attribute elements * * @public */ export declare interface IElementsQueryOptions { /** * Ordering of the elements */ order?: SortDirection; /** * Filter elements by text value */ filter?: string; /** * If true, the `filter` prop will behave negatively - i.e. it will not include items matching the `filter` value. */ complement?: boolean; /** * Include the total count of all elements in the response (without filters applied) */ includeTotalCountWithoutFilters?: boolean; /** * Specify particular elements to load. * * @remarks * This is commonly used to preload selected elements in the attribute filter. */ elements?: ElementsQueryOptionsElementsSpecification; /** * Decides whether result will include also the primary label elements or only requested label ones. * It changes also the cardinality of result. * * If true, returned label values are in cardinality of primary label, i.e., result could contain * duplicated values. * * If false, returned label values are unique values and smaller amount of label values can be returned * than the number of primary label values. * * @remarks * This is used mainly in filters to not display duplicate values where each of them filter out the same * records from an insight when text value attribute filters are used. * * The value is applied only on backends without the supportsElementUris capability. */ excludePrimaryLabel?: boolean; /** * Provided filter uses values from primary label. * * @remarks * This is to allow getting elements of requested label corresponding to primary label values in filter. */ filterByPrimaryLabel?: boolean; /** * Cache ID to use when requesting subsequent elements from the backend. * * @remarks * This is to prevent inconsistent results when the underlying datasource is volatile. * If not specified, the backend will generate a value that the client should use in subsequent requests. * Note that not all backend types support this. */ cacheId?: string; } /** * Specification of particular elements to load in {@link IElementsQueryOptions} using the values of the primary * display form related to the attribute the requested display form is from. * * @public */ export declare interface IElementsQueryOptionsElementsByPrimaryDisplayFormValue { /** * The values to request. */ primaryValues: Array; } /** * Specification of particular elements to load in {@link IElementsQueryOptions} using their URIs. * * @remarks * This is not supported on backends without the supportsElementUris capability. * * @public */ export declare interface IElementsQueryOptionsElementsByUri { /** * The element URIs to request. */ uris: Array; } /** * Specification of particular elements to load in {@link IElementsQueryOptions} using their values. * * @public */ export declare interface IElementsQueryOptionsElementsByValue { /** * The values to request. */ values: Array; } /** * Paged result of valid element query. Last page of data returns empty items. * * @public */ export declare type IElementsQueryResult = IPagedResource; /** * Provides functions to obtain entitlements * * @public */ export declare interface IEntitlements { /** * Returns current license entitlements */ resolveEntitlements(): Promise; } /** * Additional options for the prepared execution. * * @public */ /** * Arbitrary metadata attached to a prepared execution. * * @remarks * Use this bag to correlate executions with higher-level constructs (for example, * geo layer identifiers). The context travels with the execution through immutable * operations and can be retrieved once the data is resolved. * * @public */ export declare type IExecutionContext = unknown; /** * Execution factory provides several methods to create a prepared execution from different types * of inputs. * * @remarks * Note: the execution factory WILL perform extensive input validation to ensure that the created * instance of prepared execution is semantically correct. * * @public */ export declare interface IExecutionFactory { /** * Prepares a new execution for the provided execution definition. * * @remarks * The contract is that the definition is taken and used in the prepared execution AS IS. Compared * to the other convenience methods, this method MUST NOT create prepared executions with automatically * generated dimensions. * * @param def - execution definition * @param options - additional options for the prepared execution * @returns new prepared execution */ forDefinition(def: IExecutionDefinition, options?: IPreparedExecutionOptions): IPreparedExecution; /** * Prepares a new execution for a list of attributes and measures, filtered using the * provided filters. * * @remarks * The contract is that prepared executions created by this method MUST be executable and MUST come with * pre-filled dimensions created using the {@link @gooddata/sdk-model#defaultDimensionsGenerator}. * * @param items - list of attributes and measures, must not be empty * @param options - additional options for the prepared execution * @param filters - list of filters, may not be provided */ forItems(items: IAttributeOrMeasure[], filters?: INullableFilter[], options?: IPreparedExecutionOptions): IPreparedExecution; /** * Prepares a new execution for a list of buckets. * * @remarks * Attributes and measures WILL be transferred to the * execution in natural order: * * - Order of items within a bucket is retained in the execution * - Items from first bucket appear before items from second bucket * * Or more specifically, given two buckets with items as [A1, A2, M1] and [A3, M2, M3], the resulting * prepared execution WILL have definition with attributes = [A1, A2, A3] and measures = [M1, M2, M3] * * The contract is that prepared executions created by this method MUST be executable and MUST come with * pre-filled dimensions created using the {@link @gooddata/sdk-model#defaultDimensionsGenerator}. * * @param buckets - list of buckets with attributes and measures, must be non empty, must have at least one attr or measure * @param filters - optional, may not be provided, may contain null or undefined values which must be ignored * @param options - additional options for the prepared execution */ forBuckets(buckets: IBucket[], filters?: INullableFilter[], options?: IPreparedExecutionOptions): IPreparedExecution; /** * Prepares a new execution for the provided insight. * * @remarks * Buckets with attributes and measures WILL be used * to obtain attributes and measures - the behavior WILL be same as in forBuckets() function. Filters, sort by * and totals in the insight WILL be included in the prepared execution. * * Additionally, an optional list of additional filters WILL be merged with the filters already defined in * the insight. * * The contract is that prepared executions created by this method MUST be executable and MUST come with * pre-filled dimensions greated using the {@link @gooddata/sdk-model#defaultDimensionsGenerator}. * * @param insightDefinition - insight definition to create execution for, must have buckets which must have some attributes or measures in them * @param filters - optional, may not be provided, may contain null or undefined values which must be ignored * @param options - additional options for the prepared execution */ forInsight(insightDefinition: IInsightDefinition, filters?: INullableFilter[], options?: IPreparedExecutionOptions): IPreparedExecution; /** * Prepares new, by-reference execution for an existing insight. * * @remarks * Execution prepared using this method MAY be realized using different backend API than the executions where * attributes and measures are provided 'freeform'. In return, this different backend API may provide additional * authorization guarantees - for instance the backend MAY only allow end user to execute these stored insights * and not do any 'freeform' execution. * * If the backend does not support execution by reference, then it MUST fall back to freeform execution. * * The contract is that prepared executions created by this method MUST be executable and MUST come with * pre-filled dimensions created using the {@link @gooddata/sdk-model#defaultDimensionsGenerator}. * * @param insight - saved insight * @param filters - optional list of filters to merge with filters already defined in the insight, may contain null or undefined values which must be ignored * @param options - additional options for the prepared execution */ forInsightByRef(insight: IInsight, filters?: INullableFilter[], options?: IPreparedExecutionOptions): IPreparedExecution; } /** * Represents results of execution done with particular definition. * * @remarks * Within the result is the description of the shape of the data and methods to to obtain views on the data. * * @public */ export declare interface IExecutionResult extends ICancelable { /** * Full definition of execution that yielded this result. */ readonly definition: IExecutionDefinition; /** * Arbitrary metadata carried over from the originating prepared execution. */ readonly context?: IExecutionContext; /** * Description of shape of the data. */ readonly dimensions: IDimensionDescriptor[]; /** * Abort signal to cancel the result retrieval. * * Note that the abort signal is shared with the prepared execution that created this result, * so if you cancel the result and want to retrieve it later again, * you should always create also a new execution for it. */ readonly signal?: AbortSignal; /** * Asynchronously reads all data for this result into a single data view. * * @returns Promise of data view */ readAll(): Promise; /** * Asynchronously reads a window of data for this result. * * @remarks * The window is specified using * offset array and size array. The offsets specify coordinates where the view starts and * are zero-based. The sizes specify size of the window in each of the results dimension. * * * @param offset - coordinates where the window starts * @param size - size of the window in each of the dimensions * @returns Promise of data view */ readWindow(offset: number[], size: number[]): Promise; /** * Reads forecast for the execution result. * @beta */ readForecastAll(config: IForecastConfig): Promise; /** * Reads outliers for the execution result. * @alpha */ readOutliersAll(config: IOutliersConfig): Promise; /** * Reads anomaly detection for the execution result. * @alpha */ readAnomalyDetectionAll(config: IAnomalyDetectionConfig): Promise; /** * Reads anomaly detection for the execution result. * @alpha */ readClusteringAll(config: IClusteringConfig): Promise; /** * Reads all the execution result data as a binary stream. * @alpha */ readBinaryStreamAll(config: IExecutionResultBinaryStreamConfig): Promise; /** * Transforms this execution result - changing the result sorting, dimensionality and available * totals is possible through transformation. * * @remarks * It is strongly encouraged to use this function every time when data SHOULD remain the same and just * its sorting or dimensionality or totals MUST change. That is because since this intent of the caller * is known, the function can apply additional optimizations and obtain the updated result faster * compared to fully running the execution. * * Whether the reuse of the computed result actually happens depends on couple of factors: * * - Transformation is eligible: adding new native totals (roll-ups) necessitates full re-execution; * all other types of changes (including adding other types of totals) are eligible for execution result reuse. * * - Backend capabilities: backend MAY NOT be able to natively reuse existing execution result. This is * communicated by the canTransformExistingResult indicator. * * If the transformation is not eligible for result reuse or the backend is not capable of this optimization, then * a new execution WILL be done completely transparently for the caller. * * @returns new prepared execution with no sorts, dimensions or totals */ transform(): IPreparedExecution; /** * Asynchronously exports all data in this result to a blob. * * Exported file is downloaded and attached as Blob data to the current window instance. * * @param options - customize how the result looks like (format etc.) * @returns promise with object URL pointing to a Blob data of downloaded exported insight */ export(options: IExportConfig): Promise; /** * Tests if this execution result is same as the other result. * * @param other - other result * @returns true if equal, false if not */ equals(other: IExecutionResult): boolean; /** * Unique fingerprint of the execution result. * * @remarks * The fingerprint is influenced by both data included in * the result and its dimensionality, sorting and totals. * * Thus, two results with the same data and same execution definition will have the same fingerprint. */ fingerprint(): string; /** * Server-assigned identifier of this execution result. * * @remarks * This is the signed result ID that can be used to reference the cached execution result * when communicating with backend services (e.g. GenAI context). * * @returns the result ID string, or undefined if not available * @internal */ resultId(): string | undefined; } /** * Additional configuration of the execution result retrieval as binary stream. * @alpha */ export declare interface IExecutionResultBinaryStreamConfig { /** * Which format to retrieve the data in. */ format?: ExecutionResultBinaryStreamFormat; } /** * A piece of extra information related to the results (e.g. debug information, warnings, etc.). * @alpha */ export declare interface IExecutionResultDataSourceMessage { /** * Id correlating different pieces of supplementary info together. */ correlationId: string; /** * Information about what part of the system created this piece of supplementary info. */ source: string; /** * Type of the supplementary info instance. * There are currently no well-known values for this, but there might be some in the future. */ type: string; /** * Data of this particular supplementary info item: * a free-form JSON specific to the particular supplementary info item type. */ data?: object; } /** * Additional metadata for the particular execution result. * @alpha */ export declare interface IExecutionResultMetadata { /** * Additional information sent by the underlying data source. */ readonly dataSourceMessages: ReadonlyArray; /** * Limits broken during result computation, causing partial data to be returned. */ readonly limitBreaks?: ReadonlyArray; } /** * Explain provider for download or get data from explain api * @internal */ export declare interface IExplainProvider { download(): Promise; data(): Promise]>; } /** * Represents results of explain done with particular definition for provided exaplain type. * @see ExplainType * * @internal */ export declare type IExplainResult = { ["MAQL"]: unknown; ["GRPC_MODEL"]: unknown; ["WDF"]: unknown; ["QT"]: unknown; ["OPT_QT"]: unknown; ["QT_SVG"]: string; ["OPT_QT_SVG"]: string; ["SQL"]: string; }; /** * A single pre-executed additional layer in a multi-layer tabular export. * * @alpha */ export declare interface IExportAdditionalExecution { /** Already-executed result for this layer. */ executionResult: IExecutionResult; /** Layer title used for the exported sheet or file name. */ title?: string; } /** * Configuration for exports of results into tabular formats. * * @public */ export declare interface IExportConfig { /** * Format of the export file. Defaults to CSV if not specified. */ format?: "xlsx" | "csv" | "raw" | "pdf"; /** * Applicable for XLSX format; specifies title of the workbook. */ title?: string; /** * Applicable for CSV format; specifies the delimiter to use between values. */ delimiter?: string; /** * Applicable for XLSX format; indicates whether headers and cells in the sheet * should be merged. */ mergeHeaders?: boolean; /** * Applicable for XLSX, and PDF format; specifies filters to include as comments / metadata in * the Excel sheet. * * @remarks * Filters provided here are purely to paint a better context for the * person looking at the exported file. They serve no other purpose and are merely serialized * in the export in a human-readable form. * The visualizationObjectId has to be provided to make this work for PDF format. */ showFilters?: boolean; /** * Applicable for PDF format; specifies configuration for PDF export. */ pdfConfiguration?: IExportPdfConfig; /** * Visualization object identifier. Used to ensure the export result is generated based on * existing visualization in the PDF document. (PDF only) */ visualizationObjectId?: string; /** * Optional custom filters (as array of IFilter objects defined in UI SDK) to be applied * when visualizationObject is given. (PDF only) */ visualizationObjectCustomFilters?: Array; /** * Position of grand totals in the exported document. * * @remarks * Takes precedence over the position specified in the visualization object. * Applicable to all tabular export formats (XLSX, CSV, PDF). */ grandTotalsPosition?: "pinnedBottom" | "pinnedTop" | "bottom" | "top"; /** * Concrete IANA timezone ID used to resolve relative date filters and render date/time values * in the export. Overrides the workspace/user timezone settings. * * @alpha */ timezoneId?: string; /** * Override the default export result polling timeout (in milliseconds). * * @remarks * If not specified, there is still a default timeout applied. * You can use this to make the timeout more aggressive or more relaxed than the default. * We recommend not setting this lower than 5 seconds as it would mean only one attempt would be made. */ timeout?: number; /** * Pre-executed additional layers for multi-layer geo visualizations. * * @remarks * When set, the export includes one sheet (XLSX) or file (CSV zip) per layer. The result * that {@link IExecutionResult.export} is called on is the main layer (index 0); these are * the additional layers, in their original order. Each layer carries its own execution result * so the backend can build per-layer overrides. * * @alpha */ additionalExecutions?: ReadonlyArray; } /** * Service to query exportDefinitions. * * @alpha */ export declare interface IExportDefinitionsQuery { /** * Sets number of exportDefinitions to return per page. * Default size: 50 * * @param size - desired max number of exportDefinitions per page must be a positive number * @returns exportDefinitions query */ withSize(size: number): IExportDefinitionsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns exportDefinitions query */ withPage(page: number): IExportDefinitionsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns exportDefinitions query */ withFilter(filter: { title?: string; }): IExportDefinitionsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns exportDefinitions query */ withSorting(sort: ExportDefinitionQuerySort[]): IExportDefinitionsQuery; /** * Starts the query. * * @returns promise of the first page of the results */ query(): Promise; } /** * Configuration options for querying exportDefinitions * * @alpha */ export declare interface IExportDefinitionsQueryOptions { /** * Specify (zero-based) starting offset for the results. Default: 0 */ offset?: number; /** * Specify number of items per page. Default: 50 */ limit?: number; /** * Specify ordering of the exportDefinitions. Default: natural ordering provided by the * analytical backend. */ orderBy?: ExportDefinitionOrdering; /** * Filter exportDefinitions by their author. The value of this property is identifier of the author. */ author?: string; /** * Filter exportDefinitions by their title */ title?: string; /** * Specify if information about the users that created/modified the exportDefinitions should be loaded for each exportDefinition. * * @remarks * Defaults to false. */ loadUserData?: boolean; } /** * Queried exportDefinitions are returned in a paged representation. * * @alpha */ export declare type IExportDefinitionsQueryResult = IPagedResource; /** * Configuration for PDF export. * * @public */ export declare interface IExportPdfConfig { /** Page size and orientation (e.g. 'a4 landscape'). @deprecated Use pageSize and pageOrientation instead. */ pdfPageSize?: string; /** PDF top left header content. @deprecated This property is no longer supported. */ pdfTopLeftContent?: string; /** PDF top right header content. @deprecated This property is no longer supported. */ pdfTopRightContent?: string; /** Page size */ pageSize?: "A3" | "A4" | "LETTER"; /** Page orientation */ pageOrientation?: "PORTRAIT" | "LANDSCAPE"; /** Show info page with export information. */ showInfoPage?: boolean; } /** * Result of export is an object URL pointing to a Blob of downloaded data attached to the current * window instance. The result also contains name of the downloaded file provided by the backend export * service. * * {@link URL#revokeObjectURL} method must be used when object URL is no longer needed to release * the blob memory. * * @public */ export declare interface IExportResult { /** URI from which can the export be fetched again */ uri: string; /** Object URL pointing to the downloaded blob of exported data */ objectUrl: string; /** Name of the exported file provided by the export service */ fileName?: string; } /** * Service to query facts. * * @public */ export declare interface IFactsQuery { /** * Sets number of facts to return per page. * Default size: 50 * * @param size - desired max number of facts per page must be a positive number * @returns facts query */ withSize(size: number): IFactsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns facts query */ withPage(page: number): IFactsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns facts query */ withFilter(filter: IFilterBaseOptions): IFactsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns facts query */ withSorting(sort: string[]): IFactsQuery; /** * Sets include for the query. * * @param include - include to apply * @returns facts query */ withInclude(include: string[]): IFactsQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns facts query */ withOrigin(origin: ObjectOrigin | (string & {})): IFactsQuery; /** * Selects which backend endpoint flavor to use when listing facts. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns facts query * @beta */ withMethod(method: QueryMethod): IFactsQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Queried attributes are returned in a paged representation. * * @public */ export declare type IFactsQueryResult = IPagedResource; /** * @beta */ export declare interface IFilterBaseOptions { /** * Resource contains the search string in any of several properties (case insensitive logical OR). * @beta */ search?: string; /** * Resource id (case sensitive). * @beta */ id?: string[]; /** * Resource id to exclude (case sensitive). * @beta */ excludeId?: string[]; /** * Resource contains title (case insensitive). * @beta */ title?: string; /** * Resource was created by user (case sensitive). * @beta */ createdBy?: string[]; /** * Resource was not created by user (case sensitive). * @beta */ excludeCreatedBy?: string[]; /** * Resource contains tags (case sensitive). * @beta */ tags?: string[]; /** * Resource does not contain tags (case sensitive). * @beta */ excludeTags?: string[]; /** * Resource is hidden. * @beta */ isHidden?: boolean; /** * Resource is certified. * @beta */ certification?: boolean; } /** * Service to query valid filter elements for particular filter. * * @public */ export declare interface IFilterElementsQuery { /** * Sets number of valid elements to return per page. * Default limit is specific per backend * * @param limit - desired max number of valid elements per page; must be a positive number * @returns element query */ withLimit(limit: number): IFilterElementsQuery; /** * Sets starting point for the query. Backend WILL return no data if the offset is greater than * total number of valid elements. * Default offset: 0 * * @param offset - zero indexed, must be non-negative * @returns element query */ withOffset(offset: number): IFilterElementsQuery; /** * Starts the valid elements query. * * @returns promise of first page of the results */ query(): Promise; } /** * @beta */ export declare interface IForecastConfig { /** * Forecast period in number of periods - e.g. 3 */ forecastPeriod: number; /** * Confidence level of the forecast in percents - e.g. 0.95 */ confidenceLevel: number; /** * Defines, whether the forecast should be seasonal. */ seasonal: boolean; } /** * @beta */ export declare interface IForecastResult { attribute: string[]; origin: Array; prediction: Array; lowerBound: Array; upperBound: Array; } /** * Represents a prediction, lower bound and upper bound for a forecast. * @beta */ export declare interface IForecastView { headerItems: IResultHeader[][][]; prediction: DataValue[][]; low: DataValue[][]; high: DataValue[][]; loading: boolean; } /** * GenAI chat evaluation result. * @beta */ export declare interface IGenAIChatEvaluation { routing?: IGenAIChatRouting; reasoning?: IGenAIChatReasoning; textResponse?: string; /** @deprecated Use `semanticSearch` property instead. */ foundObjects?: IGenAIFoundObjects; semanticSearch?: ISemanticSearchResult; createdVisualizations?: IGenAICreatedVisualizations; changeAnalysisParams?: IGenAIChangeAnalysisParams; errorResponse?: string; chatHistoryThreadId?: string; chatHistoryInteractionId?: string; } /** * GenAI-powered features. * @beta */ export declare interface IGenAIService { /** * Get a knowledge documents service for listing and managing knowledge documents. * @internal */ getKnowledgeDocuments(): IKnowledgeDocumentsService; /** * Get a semantic search query builder. */ getSemanticSearchQuery(): ISemanticSearchQuery; /** * Get a chatbot thread builder. */ getChatThread(): IChatThread; /** * Get a chatbot conversations builder. * * @param options - Optional scoping for the returned service. * When `isPreview` is `true`, list and create operations target the * caller's preview agent for the current workspace (backend agent id: * `{userId}-{workspaceId}-preview`). The preview agent must already * exist and be enabled — otherwise `create()` will fail. * @internal */ getChatConversations(options?: { isPreview?: boolean; }): IChatConversations; /** * Get a memory service for listing and managing memory items. * @internal */ getMemoryItems(): IMemoryItemsService; /** * Get Analytics Catalog related APIs. * @internal */ getAnalyticsCatalog(): IAnalyticsCatalogService; /** * Get semantic quality related APIs. * @internal */ getSemanticQuality(): ISemanticQualityService; /** * Get check if LLM is configured. */ getLlmConfigured(): Promise; /** * Generate an AI summary of a dashboard for the given visualizations and filter context. * @beta */ summarizeDashboard(request: IDashboardSummaryRequest, options?: { signal?: AbortSignal; }): Promise; } /** * Service allowing access to geo location assets (styles, tiles, glyphs) * and management of custom geo collections. * * @alpha */ export declare interface IGeoService { /** * Loads the default MapLibre style configured for the authenticated organization. * * @param params - Optional query parameters. */ getDefaultStyle(params?: IGeoStyleParams): Promise; /** * Loads icon names from the sprite sheet used by the default geo style. * * @remarks * Returns an empty array when the organization does not have a sprite sheet configured. */ getDefaultStyleSpriteIcons(): Promise; /** * Lists all available map styles. */ getStyles(): Promise; /** * Loads the MapLibre style for a specific style identifier. * * @param styleId - Style identifier (e.g. `standard-light`). * @param params - Optional query parameters. */ getStyleById(styleId: string, params?: IGeoStyleParams): Promise; /** * Returns service for managing custom geo collections. */ collections(): IOrganizationGeoCollectionsService; } /** * An item in the list of available map styles. * * @alpha */ export declare interface IGeoStyleListItem { /** * Unique style identifier (e.g. `standard-light`, `satellite`). */ id: string; /** * Human-readable title (e.g. `Standard (Light)`). */ title: string; /** * URL to fetch the full MapLibre style document for this style. */ link: string; } /** * Parameters for the location style endpoint. * * @alpha */ export declare interface IGeoStyleParams { /** * Language tag passed as `language` query parameter. * * @remarks * Two-letter ISO 639-1 code (e.g. `en`, `de`, `fr`). * When provided, map labels are returned in the requested language. */ language?: string; } /** * Geo style specification document returned by backend. * * @alpha */ export declare type IGeoStyleSpecification = Record; /** * Configuration options for loading automation metadata object. * * @alpha */ export declare interface IGetAutomationOptions { /** * Specify if information about the users that created/modified the automation should be loaded. * * @remarks * Defaults to false. * * If user is inactive or logged in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; } /** * Configuration options for loading automation metadata objects. * * @alpha */ export declare interface IGetAutomationsOptions { /** * Specify (zero-based) starting offset for the results. Default: 0 */ offset?: number; /** * Specify number of items per page. Default: 50 */ limit?: number; /** * Specify if information about the users that created/modified the exportDefinitions should be loaded for each exportDefinition. * * @remarks * Defaults to false. */ loadUserData?: boolean; } /** * Configuration options for loading automation metadata objects with query. * * @alpha */ export declare interface IGetAutomationsQueryOptions { /** * Specify if automationResult should be included in the response. * * @remarks * Defaults to false. */ includeAutomationResult?: boolean; } /** * Configuration options for getting dashboards. * * @alpha */ export declare interface IGetDashboardOptions { /** * Specify if information about the users that created/modified the dashboard should be loaded. * Defaults to false. * * If user is inactive or logged in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; /** * Specify if also dashboards available only via link should be loaded. * Such dashboards may not be supported by every backend. * * Defaults to false. */ includeAvailableViaLink?: boolean; /** * Specify id of the currently performed dashboard pdf export. * This id is used to retrieve export-related metadata, such as currently active attribute filters. * * The id is missing when the dashboard is not loaded in the export mode */ exportId?: string; /** * Specify type of the currently performed dashboard export. * This id is used to retrieve export-related metadata, such as currently active attribute filters. */ exportType?: "visual" | "slides"; /** * Tab identifier to export. Used for export of dashboard with tabs. */ exportTabId?: string; } /** * Configuration options for getting dashboard plugin. * * @alpha */ export declare interface IGetDashboardPluginOptions { /** * Specify if information about the users that created/modified the dashboard plugin should be loaded. * Defaults to false. * * If user is inactive or logged-in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; } /** * Configuration options for getting a single exportDefinition. * * @alpha */ export declare interface IGetExportDefinitionOptions { /** * Specify if information about the users that created/modified the exportDefinition should be loaded. * * @remarks * Defaults to false. * * If user is inactive or logged in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; } /** * Configuration options for getting a single insight. * * @public */ export declare interface IGetInsightOptions { /** * Specify if information about the users that created/modified the insight should be loaded. * * @remarks * Defaults to false. * * If user is inactive or logged in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; } /** * Options for getting a measure. * * @public */ export declare interface IGetMeasureOptions { /** * Specifies whether information about the users who created or modified the measure should be loaded. * * @remarks * Defaults to false. */ loadUserData?: boolean; } /** * Configuration options for getting scheduled mails. * * @alpha */ export declare interface IGetScheduledMailOptions { /** * Specify if information about the users that created/modified the scheduled email should be loaded. * * @remarks * Defaults to false. * * If user is inactive or logged in user has not rights to access this information than users that created/modified is undefined. */ loadUserData?: boolean; /** * List only subset of scheduled mails authored by current user. * * @remarks * Defaults to false. */ createdByCurrentUser?: boolean; } /** * Additional options for the {@link IWorkspaceInsightsService.getVisualizationClasses} function. * * @public */ export declare interface IGetVisualizationClassesOptions { /** * If true, deprecated visualization classes will be included in the result. */ includeDeprecated?: boolean; } /** * Contains information about objects that may be referenced by an insight. * * @remarks * The contents of this object depend on the insight and the types requested * at the time of call to the {@link IWorkspaceInsightsService.getInsightReferencedObjects} function. * * @public */ export declare interface IInsightReferences { /** * Requested catalog items. * * @remarks * If requested, measures, attributes, display forms, facts and dateDataSets referenced by the insight will be * returned here. If none of them were requested, the catalogItems will be undefined. If some were * requested but insight is not referencing those types, then the array will be empty. */ catalogItems?: CatalogItem[]; /** * If requested, metadata about data sets from which this insight queries data will be returned here. */ dataSetMeta?: IMetadataObject[]; } /** * Contains information about objects that may be referencing an insight. * * @remarks * The contents of this object depend on reference of the insight requested at the time * of call to the {@link IWorkspaceInsightsService.getInsightReferencingObjects} function. * * @public */ export declare interface IInsightReferencing { /** * If requested, metadata about analytical dashboards from which this insight queries data will be returned here. */ analyticalDashboards?: IMetadataObject[]; } /** * Service to query insights. * * @public */ export declare interface IInsightsQuery { /** * Sets number of insights to return per page. * Default size: 50 * * @param size - desired max number of insights per page must be a positive number * @returns insights query */ withSize(size: number): IInsightsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns insights query */ withPage(page: number): IInsightsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns insights query */ withFilter(filter: IFilterBaseOptions): IInsightsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns insights query */ withSorting(sort: string[]): IInsightsQuery; /** * Sets include for the query. * * @param include - include to apply * @returns insights query */ withInclude(include: string[]): IInsightsQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns insights query */ withOrigin(origin: ObjectOrigin | (string & {})): IInsightsQuery; /** * Selects which backend endpoint flavor to use when listing insights. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns insights query * @beta */ withMethod(method: QueryMethod): IInsightsQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Configuration options for querying insights * * @public */ export declare interface IInsightsQueryOptions { /** * Specify (zero-based) starting offset for the results. Default: 0 */ offset?: number; /** * Specify number of items per page. Default: 50 */ limit?: number; /** * Specify ordering of the insights. Default: natural ordering provided by the * analytical backend. Note: this may differ between backend implementations. */ orderBy?: InsightOrdering; /** * Filter insights by their author. The value of this property is URI of the author. */ author?: string; /** * Filter insights by their title */ title?: string; /** * Specify if information about the users that created/modified the insights should be loaded for each insight. * * @remarks * Defaults to false. */ loadUserData?: boolean; } /** * Queried insights are returned in a paged representation. * * @public */ export declare type IInsightsQueryResult = IPagedResource; /** * @internal * * Key driver definition */ export declare interface IKeyDriver { /** * Display form of the key driver (label, attribute) */ displayForm: ObjRef; /** * Key driver attribute / label value */ value: string; /** * Metric value in analyzed and reference period */ metricValue: { /** * Analyzed period metric value */ from: number; /** * Reference period metric value */ to: number; /** * Delta between analyzed and reference period metric values */ delta: number; }; /** * Standard deviation of the metric value */ std: number; /** * Mean of the metric value */ mean: number; /** * Is the change significant */ isSignificantChange: boolean; } /** * Metadata for a single knowledge document stored in the knowledge base. * @internal */ export declare interface IKnowledgeDocumentMetadata { id: string; filename: string; workspaceId?: string | null; title?: string | null; numChunks?: number; createdAt?: string; updatedAt?: string; createdBy?: string; updatedBy?: string; scopes: string[]; isDisabled?: boolean | null; } /** * A single page of knowledge documents returned by the list operation. * @internal */ export declare interface IKnowledgeDocumentsPage { documents: IKnowledgeDocumentMetadata[]; nextPageToken?: string | null; totalCount?: number | null; } /** * Service for listing and managing knowledge documents in the workspace knowledge base. * @internal */ export declare interface IKnowledgeDocumentsService { /** * List knowledge documents with optional cursor-based pagination. */ list(options?: IListKnowledgeDocumentsOptions): Promise; /** * Get metadata for a single knowledge document by its ID. */ get(documentId: string): Promise; /** * Upload a new knowledge document via multipart/form-data. * Throws on failure (e.g. HTTP 409 if a document with the same filename already exists). */ create(request: ICreateKnowledgeDocumentRequest): Promise; /** * Upload or replace a knowledge document via multipart/form-data. * Creates the document if it does not exist, updates it otherwise. */ upsert(request: IUpsertKnowledgeDocumentRequest): Promise; /** * Delete a knowledge document and all its chunks. */ delete(documentId: string): Promise; /** * Patch metadata of an existing knowledge document. * Only provided fields will be updated. */ patch(documentId: string, request: IPatchKnowledgeDocumentRequest): Promise; /** * Search the knowledge base using semantic similarity. */ search(query: string, options?: ISearchKnowledgeOptions): Promise; } /** * A single result chunk returned from a knowledge base semantic search. * @internal */ export declare interface IKnowledgeSearchResult { id: string; filename: string; content: string; score: number; chunkIndex: number; totalChunks: number; pageNumbers: number[]; workspaceId?: string | null; title?: string | null; scopes: string[]; } /** * Statistics about a knowledge base search operation. * @internal */ export declare interface IKnowledgeSearchStatistics { totalResults: number; averageSimilarityScore: number; } /** * Options for listing knowledge documents with cursor-based pagination. * @internal */ export declare interface IListKnowledgeDocumentsOptions { pageSize?: number; pageToken?: string; scopes?: string[]; /** * Filter documents by title/filename substring match. */ query?: string; /** * Filter documents by their enabled/disabled state. */ state?: "enabled" | "disabled"; } /** * Service to query LLM providers. * * @alpha */ export declare interface ILlmProvidersQuery { /** * Sets number of LLM providers to return per page. * Default size: 100 * * @param size - desired max number of LLM providers per page must be a positive number * @returns LLM providers query */ withSize(size: number): ILlmProvidersQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns LLM providers query */ withPage(page: number): ILlmProvidersQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns LLM providers query */ withSorting(sort: string[]): ILlmProvidersQuery; /** * Starts the LLM providers query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the LLM providers query. * * @returns promise with a list of all LLM providers matching the specified options */ queryAll(): Promise; } /** * Queried LLM providers are returned in a paged representation. * * @alpha */ export declare type ILlmProvidersQueryResult = IPagedResource; /** * Token representing part of parsed MAQL measure expression. * * @example * ```ts * // for example "SELECT [/gdc/md/projectId/obj/6273] WHERE [/gdc/md/projectId/obj/6307] = [/gdc/md/projectId/obj/6307/elements?id=5703453]" * // could be represented as * const expressionTokens = [ * { * "type": "text", * "value": "SELECT " * }, * { * "type": "measure", * "value": "Amount", * }, * { * "type": "text", * "value": " WHERE " * }, * { * "type": "attribute", * "value": "Status", * }, * { * "type": "text", * "value": " = " * }, * { * "type": "attributeElement", * "value": "Won", * } * ] * ``` * * @public */ export declare type IMeasureExpressionToken = IObjectExpressionToken | IAttributeElementExpressionToken | ITextExpressionToken | ICommentExpressionToken | IBracketExpressionToken; /** * Contains information about key drivers for a given measure. * * @alpha */ export declare interface IMeasureKeyDrivers { /** * Labels for the key drivers */ labels: string[]; /** * Effects for the key drivers */ effects: number[]; } /** * Contains information about objects that may be referencing an measure. {@link IWorkspaceMeasuresService.getMeasureReferencingObjects} function. * * @public */ export declare interface IMeasureReferencing { measures?: IMetadataObject[]; insights?: IInsight[]; } /** * Service to query measures. * * @public */ export declare interface IMeasuresQuery { /** * Sets number of measures to return per page. * Default size: 50 * * @param size - desired max number of measures per page must be a positive number * @returns measures query */ withSize(size: number): IMeasuresQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns measures query */ withPage(page: number): IMeasuresQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns measures query */ withFilter(filter: IFilterBaseOptions): IMeasuresQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns measures query */ withSorting(sort: string[]): IMeasuresQuery; /** * Sets include for the query. * * @param include - include to apply * @returns measures query */ withInclude(include: string[]): IMeasuresQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns measures query */ withOrigin(origin: ObjectOrigin | (string & {})): IMeasuresQuery; /** * Selects which backend endpoint flavor to use when listing measures. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns measures query * @beta */ withMethod(method: QueryMethod): IMeasuresQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Queried measures are returned in a paged representation. * * @public */ export declare type IMeasuresQueryResult = IPagedResource; /** * Memory created by users response. * @internal */ export declare interface IMemoryCreatedByUsers { reasoning: string; users: IUser[]; } /** * Memory items filter options. * @public */ export declare interface IMemoryItemsFilterOptions extends IFilterBaseOptions { strategy?: MemoryItemStrategy[]; excludeStrategy?: MemoryItemStrategy[]; isDisabled?: boolean; } /** * Service to query memory items. * * @public */ export declare interface IMemoryItemsQuery { /** * Sets number of memory items to return per page. * Default size: 50 * * @param size - desired max number of memory items per page must be a positive number * @returns memory items query */ withSize(size: number): IMemoryItemsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns memory items query */ withPage(page: number): IMemoryItemsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns memory items query */ withFilter(filter: IMemoryItemsFilterOptions): IMemoryItemsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns memory items query */ withSorting(sort: string[]): IMemoryItemsQuery; /** * Sets include for the query. * * @param include - include to apply * @returns memory items query */ withInclude(include: string[]): IMemoryItemsQuery; /** * Sets origin for the query. * * @param origin - origin to apply. This is an open string union to allow platform-specific origin values in addition to the built-in literals. * @returns memory items query */ withOrigin(origin: ObjectOrigin | (string & {})): IMemoryItemsQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Memory items query result. * @internal */ export declare type IMemoryItemsQueryResult = IPagedResource; /** * Memory service. * @internal */ export declare interface IMemoryItemsService { /** * Get a memory items query builder. */ getMemoryItemsQuery(): IMemoryItemsQuery; /** * Create a new memory item. */ create(item: IMemoryItemDefinition): Promise; /** * Update an existing memory item. */ update(id: string, item: IMemoryItemDefinition): Promise; /** * Patch an existing memory item. */ patch(id: string, item: Partial): Promise; /** * Delete a memory item. */ delete(id: string): Promise; /** * Get memory created by users. */ getCreatedByUsers(): Promise; } /** * Queried notification channel identifiers are returned in a paged representation. * * @beta */ export declare type INotificationChannelIdentifiersQueryResult = IPagedResource; /** * Service to query notification channels. * * @beta */ export declare interface INotificationChannelsQuery { /** * Sets number of notification channels to return per page. * Default size: 100 * * @param size - desired max number of notification channels per page must be a positive number * @returns notification channels query */ withSize(size: number): INotificationChannelsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns notification channels query */ withPage(page: number): INotificationChannelsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns notification channels query */ withSorting(sort: string[]): INotificationChannelsQuery; /** * Sets type of the automation for the query. * * @param type - type of the automation, e.g. "schedule" or "trigger" * @returns notification channels query */ withTypes(type: NotificationChannelDestinationType[]): INotificationChannelsQuery; /** * Starts the notification channels query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the notification channels query. * * @returns promise with a list of all notification channels matching the specified options */ queryAll(): Promise; /** * Starts the notification channel identifiers query (lightweight, no sensitive data). * * @returns promise of first page of the results */ queryIdentifiers(): Promise; /** * Starts the notification channel identifiers query (lightweight, no sensitive data). * * @returns promise with a list of all notification channel identifiers matching the specified options */ queryAllIdentifiers(): Promise; } /** * Queried notification channels are returned in a paged representation. * * @beta */ export declare type INotificationChannelsQueryResult = IPagedResource; /** * Service to query notifications. * * @public */ export declare interface INotificationsQuery { /** * Sets number of notifications to return per page. * Default size: 100 * * @param size - desired max number of notifications per page must be a positive number * @returns notifications query */ withSize(size: number): INotificationsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns notifications query */ withPage(page: number): INotificationsQuery; /** * Filter notifications by workspace. * * @param workspaceId - id of the workspace * @returns notifications query */ withWorkspace(workspaceId: string): INotificationsQuery; /** * Filter notifications by read status. * * @param status - "read" or "unread" * @returns notifications query */ withStatus(status: "read" | "unread"): INotificationsQuery; /** * Starts the notifications query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the notifications query. * * @returns promise with a list of all notifications matching the specified options */ queryAll(): Promise; } /** * Queried notifications are returned in a paged representation. * * @beta */ export declare type INotificationsQueryResult = IPagedResource; /** * Ordering options for insight query. * * @public */ export declare type InsightOrdering = "id" | "title" | "updated"; /** * @public */ export declare type InsightReferenceTypes = Exclude; /** * Parsed {@link https://help.gooddata.com/pages/viewpage.action?pageId=86795279 | MAQL} token referencing a metadata object. * * @remarks * See {@link IMeasureExpressionToken} for more information. * * @public */ export declare interface IObjectExpressionToken { /** * Expression token type */ type: ObjectType; /** * Title of the object */ value: string; /** * Id of the object */ id?: string; /** * Ref of the object */ ref: ObjRef; } /** * Identifies an object whose access is being managed. The `kind` lets the backend * route to the right endpoint without an extra lookup to resolve the ref. * * @alpha */ export declare interface IObjectPermissionsObject { readonly kind: ObjectPermissionsObjectKind; readonly ref: ObjRef; } /** * Represents an organization that services analytical workspaces. * * @public */ export declare interface IOrganization { /** * ID of organization. */ readonly organizationId: string; /** * Returns details about the organization. * * @param includeAdditionalDetails - include additional details such as bootstrap user and user group. */ getDescriptor(includeAdditionalDetails?: boolean): Promise; /** * Updates details about the organization. * * @param descriptor - properties to update */ updateDescriptor(descriptor: IOrganizationDescriptorUpdate): Promise; /** * Returns service that can be used to query and update organization security settings. */ securitySettings(): ISecuritySettingsService; /** * Returns service that can be used to query and update organization styling. */ styling(): IOrganizationStylingService; /** * Returns current organization settings. */ settings(): IOrganizationSettingsService; /** * Returns service that can be used to query and update organization users and user groups. */ users(): IOrganizationUserService; /** * Returns service that can be used to query and manage permissions to organization. */ permissions(): IOrganizationPermissionService; /** * Returns service that can be used to query and manage organization notification channels. */ notificationChannels(): IOrganizationNotificationChannelService; /** * Returns service that can be used to query and manage organization LLM providers. */ llmProviders(): IOrganizationLlmProvidersService; /** * Returns service that can be used to query and manage organization notifications. */ notifications(): IOrganizationNotificationService; /** * Returns service that can be used to query and manage automations across all workspaces in the organization * for centralized automation management. * * @alpha */ automations(): IOrganizationAutomationService; /** * Returns service that can be used to query AI agent skills available in the organization. * * @alpha */ agents(): IOrganizationAgentsService; /** * Returns service that can be used to query and manage organization-level generative-AI resources. * * @alpha */ genAI(): IOrganizationGenAIService; /** * Returns service that can be used to query organization-level export templates for slide exports. * * @beta */ exportTemplates(): IOrganizationExportTemplatesService; /** * Returns service that can be used to manage organization-level IP allowlist policies. * * @alpha */ ipAllowlists(): IOrganizationIpAllowlistService; } /** * This service provides access to AI agents and their skills in the organization. * * @alpha */ export declare interface IOrganizationAgentsService { /** * Get all available skills for the AI agent. * * @returns Promise resolved with a list of available skills. */ getAvailableSkills(): Promise; /** * Get agents query. * * @returns agents query */ getAgentsQuery(): IAgentsQuery; /** * Get agent by ref. * * @param ref - ref of the agent * @returns Promise resolved with agent. */ getAgent(ref: ObjRef): Promise; /** * Create a new agent. * * @param agent - definition of the agent * @returns Promise resolved with created agent. */ createAgent(agent: IAgent): Promise; /** * Update existing agent (full replace). * * @param agent - definition of the agent * @returns Promise resolved with updated agent. */ updateAgent(agent: IAgent): Promise; /** * Patch existing agent (partial update). * * @param agent - partial definition of the agent * @returns Promise resolved with patched agent. */ patchAgent(agent: IAgentPatch): Promise; /** * Delete an agent. * * @param ref - ref of the agent * @returns Promise resolved when the agent is deleted. */ deleteAgent(ref: ObjRef): Promise; } /** * AI observability metric for the caller's organization. * * @alpha */ export declare interface IOrganizationAIObservabilityMetric { /** * Metric type. */ type: IOrganizationAIObservabilityMetricType; /** * Metric value for the current calendar month. */ currentValue: number; /** * Metric value for the previous calendar month. */ previousValue: number; } /** * AI observability metric type. * * @alpha */ export declare type IOrganizationAIObservabilityMetricType = "AI_WORKSPACES" | "AI_USERS" | "AI_QUERIES"; /** * AI observability overview for the caller's organization. * * @alpha */ export declare interface IOrganizationAIObservabilityOverview { metrics: IOrganizationAIObservabilityMetric[]; } /** * Service for querying AI observability metrics. * * @alpha */ export declare interface IOrganizationAIObservabilityService { /** * Returns AI observability overview for the caller's organization. */ getOverview(): Promise; } /** * This service provides access to organization-wide automations for centralized automation management. * It allows managing automations across all workspaces within the organization. * * @alpha */ export declare interface IOrganizationAutomationService { /** * List automations across the organization for centralized management * * @param options - specify additional options * @returns methods for querying organization automations */ getAutomationsQuery(options?: IGetAutomationsQueryOptions): IOrganizationAutomationsQuery; /** * Delete automation from any workspace within the organization * * @param id - id of the automation * @returns Promise resolved when the automation is deleted. */ deleteAutomation(id: string, workspaceId: string): Promise; /** * Delete multiple automations across workspaces for centralized management * * Deletes multiple automations identified by their IDs from any workspace within the organization. * * @param ids - IDs of the automations to delete * @returns Promise resolved when the automations are deleted. */ deleteAutomations(automations: Array<{ id: string; workspaceId: string; }>): Promise; /** * Pause automation from any workspace within the organization * * @param id - id of the automation * @param workspaceId - id of the workspace containing the automation * @returns Promise resolved when the automation is paused. */ pauseAutomation(id: string, workspaceId: string): Promise; /** * Pause multiple automations across workspaces for centralized management * * Pauses multiple automations identified by their IDs from any workspace within the organization. * * @param ids - IDs of the automations to pause * @returns Promise resolved when the automations are paused. */ pauseAutomations(automations: Array<{ id: string; workspaceId: string; }>): Promise; /** * Resume automation from any workspace within the organization * * @param id - id of the automation * @param workspaceId - id of the workspace containing the automation * @returns Promise resolved when the automation is resumed. */ resumeAutomation(id: string, workspaceId: string): Promise; /** * Resume multiple automations across workspaces for centralized management * * Resumes multiple automations identified by their IDs from any workspace within the organization. * * @param ids - IDs of the automations to resume * @returns Promise resolved when the automations are resumed. */ resumeAutomations(automations: Array<{ id: string; workspaceId: string; }>): Promise; /** * Unsubscribe from automation from any workspace within the organization * * @param id - id of the automation * @param workspaceId - id of the workspace containing the automation * @returns Promise resolved when unsubscribed from the automation. */ unsubscribeAutomation(id: string, workspaceId: string): Promise; /** * Unsubscribe from multiple automations across workspaces for centralized management * * Unsubscribes from multiple automations identified by their IDs from any workspace within the organization. * * @param automations - Array of automation objects with id and workspaceId * @returns Promise resolved when unsubscribed from the automations. */ unsubscribeAutomations(automations: Array<{ id: string; workspaceId: string; }>): Promise; } /** * Service to query automations across the organization for centralized automation management. * * @alpha */ export declare interface IOrganizationAutomationsQuery { /** * Sets number of automations to return per page. * Default size: 100 * * @param size - desired max number of automations per page must be a positive number * @returns organization automations query */ withSize(size: number | undefined): IOrganizationAutomationsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns organization automations query */ withPage(page: number | undefined): IOrganizationAutomationsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns organization automations query */ withFilter(filter: { title?: string; }): IOrganizationAutomationsQuery; /** * Sets sorting for the query. * * @param sort - Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @returns organization automations query */ withSorting(sort: string[]): IOrganizationAutomationsQuery; /** * Sets type of the automation for the query. * * @param type - type of the automation, e.g. "schedule" or "trigger" * @returns organization automations query */ withType(type: AutomationType | undefined): IOrganizationAutomationsQuery; /** * Sets author of the automation for the query. * * @param author - author of the automation * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ withAuthor(author: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Sets recipient of the automation for the query. * * @param recipient - recipient of the automation * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ withRecipient(recipient: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Sets external recipient of the automation for the query. * * @param externalRecipient - external recipient of the automation * @returns organization automations query */ withExternalRecipient(externalRecipient: string | undefined): IOrganizationAutomationsQuery; /** * This filter gets automations if either author or recipient of the automation is the provided user. * * @param user - author or recipient of the automation * @returns organization automations query */ withUser(user: string): IOrganizationAutomationsQuery; /** * Sets dashboard id for the query. * * @param dashboard - dashboard id * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ withDashboard(dashboard: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Sets status of automation results for the query. * * @param status - status of the automation result ("SUCCESS" or "FAILED") * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ withStatus(status: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Filter automations by workspace IDs for centralized management. * * @param workspace - workspace ID to filter by * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ withWorkspace(workspace: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Starts the organization automations query. * * @returns promise of first page of the results */ query(): Promise; /** * Starts the organization automations query. * * @returns promise with a list of all automations matching the specified options */ queryAll(): Promise; } /** * Queried organization automations are returned in a paged representation for centralized management. * * @alpha */ export declare type IOrganizationAutomationsQueryResult = IPagedResource; /** * Service for managing organization-level export templates. * * @beta */ export declare interface IOrganizationExportTemplatesService { /** * Get the list of available export templates for slide exports. * * @returns promise with array of export templates available in the organization */ getExportTemplates(): Promise; /** * Get a single export template by its reference. * * @param ref - reference to the export template * @returns promise with the export template */ getExportTemplate(ref: ObjRef): Promise; /** * Create a new export template. * * @param template - definition of the export template to create * @returns promise with the created export template */ createExportTemplate(template: IExportTemplateDefinition): Promise; /** * Partially update an existing export template. Only the provided properties are changed. * * @param ref - reference to the export template to update * @param template - subset of the export template properties to change * @returns promise with the updated export template */ patchExportTemplate(ref: ObjRef, template: Partial): Promise; /** * Delete an existing export template. * * @param ref - reference to the export template to delete * @returns promise */ deleteExportTemplate(ref: ObjRef): Promise; } /** * Service to query and manage organization-level generative-AI resources. * * @alpha */ export declare interface IOrganizationGenAIService { /** * Returns a service for listing and managing organization-level knowledge documents. */ getKnowledgeDocuments(): IKnowledgeDocumentsService; /** * Returns a service for listing and managing organization-level AI memory items. */ getMemoryItems(): IMemoryItemsService; /** * Returns a service for querying organization-level AI observability metrics. */ getObservability(): IOrganizationAIObservabilityService; } /** * Service for managing organization-level custom geo collections. * * @remarks * Importing geo data into a collection follows a three-step workflow: * 1. Upload a file via {@link IOrganizationGeoCollectionsService.uploadGeoCollectionFile} * 2. Convert it via {@link IOrganizationGeoCollectionsService.convertGeoCollectionFile} * 3. Import it via {@link IOrganizationGeoCollectionsService.importGeoCollectionFile} * * @alpha */ export declare interface IOrganizationGeoCollectionsService { /** * Get all custom geo collections. * * @returns Promise resolved with array of geo collections. */ getAll(): Promise; /** * Get a single custom geo collection by its identifier. * * @param id - identifier of the geo collection * @returns Promise resolved with the geo collection, or undefined if not found. */ getGeoCollection(id: string): Promise; /** * Create a new custom geo collection. * * @param definition - definition of the geo collection to create * @returns Promise resolved with created geo collection including its generated id. */ createGeoCollection(definition: IGeoCollectionDefinition): Promise; /** * Update an existing custom geo collection. * * @param geoCollection - geo collection with updated properties * @returns Promise resolved with updated geo collection. */ updateGeoCollection(geoCollection: IGeoCollection): Promise; /** * Delete a custom geo collection. * * @param id - identifier of the geo collection to delete */ deleteGeoCollection(id: string): Promise; /** * Upload a file to staging for subsequent import into a geo collection. * * @param file - geo data file to upload * @returns Promise resolved with the staging location reference. */ uploadGeoCollectionFile(file: File): Promise; /** * Convert a staged geo file into an importable format. * * @param location - staging location from a previous upload * @returns Promise resolved with the converted file location reference. */ convertGeoCollectionFile(location: string): Promise; /** * Import a staged and converted file into a geo collection. * * @param collectionId - identifier of the target geo collection * @param location - location of the converted file to import */ importGeoCollectionFile(collectionId: string, location: string): Promise; } /** * Service for managing organization-level IP allowlist policies. * * @alpha */ export declare interface IOrganizationIpAllowlistService { /** * Get all IP allowlist policies defined for the organization. * * @returns Promise resolved with an array of policies (empty when none exist). */ getAll(): Promise; /** * Create a new IP allowlist policy. * * @param definition - definition of the policy to create * @returns Promise resolved with the created policy. */ create(definition: IIpAllowlistDefinition): Promise; /** * Replace an existing IP allowlist policy (PUT semantics). * * @param definition - full definition of the policy; `id` identifies the target * @returns Promise resolved with the updated policy. */ update(definition: IIpAllowlistDefinition): Promise; /** * Delete an IP allowlist policy by its identifier. * * @param id - identifier of the policy to delete */ delete(id: string): Promise; } /** * This service provides access to organization llm providers configuration. * * @alpha */ export declare interface IOrganizationLlmProvidersService { /** * Get count of all llm providers * * @returns Promise resolved with number of llm providers. */ getCount(): Promise; /** * Get providers query * * @returns providers query */ getProvidersQuery(): ILlmProvidersQuery; /** * Delete a provider * * @param id - id of the provider * @returns Promise resolved when the provider is deleted. */ deleteLlmProvider(id: string): Promise; /** * Get llm provider by id * * @param id - id of the provider * @returns Promise resolved with provider. */ getLlmProvider(id: string): Promise; /** * Create a new llm provider * * @param provider - definition of the llm provider * @returns Promise resolved with created llm provider. */ createLlmProvider(provider: ILlmProvider): Promise; /** * Update existing llm provider * * @param provider - definition of the llm provider * @returns Promise resolved when the llm provider is updated. */ updateLlmProvider(provider: ILlmProvider): Promise; /** * Patch existing llm provider * * @param provider - definition of the llm provider * @returns Promise resolved when the llm provider is patched. */ patchLlmProvider(provider: LlmProviderPatch): Promise; /** * Test existing llm provider * * @param provider - definition of the llm provider * @returns Promise resolved with test results. */ testLlmProvider(provider: Partial): Promise; /** * List models for a provider * * @param id - id of the provider * @returns Promise resolved with list of models. * * @alpha */ listLlmProviderModels(id: string): Promise; /** * List models for a provider definition * * @param provider - definition of the llm provider * @returns Promise resolved with list of models. * * @alpha */ listLlmProviderModels(provider: Partial): Promise; } /** * This service provides access to organization notifications channels. * * @beta */ export declare interface IOrganizationNotificationChannelService { /** * Test notification channel * * @param channel - definition of the channel * @param notificationId - id of the notification to test if its already created * @param externalRecipients - external recipients of the test result * @returns Promise resolved with test response. */ testNotificationChannel(channel: INotificationChannelMetadataObjectDefinition, externalRecipients?: INotificationChannelExternalRecipient[]): Promise; getNotificationChannel(id: string): Promise; createNotificationChannel(notificationChannel: INotificationChannelMetadataObjectDefinition): Promise; /** * Update existing notification channel * * @param notificationChannel - definition of the notification channel * @returns Promise resolved with updated notification channel. */ updateNotificationChannel(notificationChannel: INotificationChannelMetadataObject): Promise; /** * Delete notification channel * * @param id - id of the notification channel * @returns Promise resolved when the notification channel is deleted. */ deleteNotificationChannel(id: string): Promise; /** * Query list of notification channels */ getNotificationChannelsQuery(): INotificationChannelsQuery; } /** * This service provides access to organization notifications. * * @public */ export declare interface IOrganizationNotificationService { /** * Mark notification as read * * @param notification - definition of the notification * @returns Promise resolved with updated notification. */ markNotificationAsRead(notificationId: string): Promise; /** * Mark all notifications as read */ markAllNotificationsAsRead(): Promise; /** * Query list of notifications */ getNotificationsQuery(): INotificationsQuery; } /** * This service provides access to organization permissions. * * @alpha */ export declare interface IOrganizationPermissionService { /** * Get list of assigned workspaces and data sources of the user and their permissions. * * @param userId - ID of the user. * * @returns promise */ getPermissionsForUser(userId: string): Promise<{ workspacePermissions: IWorkspacePermissionAssignment[]; dataSourcePermissions: IDataSourcePermissionAssignment[]; }>; /** * Get list of assigned workspaces and data sources of the user group and their permissions. * * @param userId - ID of the user. * * @returns promise */ getPermissionsForUserGroup(userGroupId: string): Promise<{ workspacePermissions: IWorkspacePermissionAssignment[]; dataSourcePermissions: IDataSourcePermissionAssignment[]; }>; /** * Get list of organization permissions assigned to the user. * * @param userId - ID of the user. * * @returns promise */ getOrganizationPermissionForUser(userId: string): Promise; /** * Get list of organization permissions assigned to the user group. * * @param userGroupId - ID of the user. * * @returns promise */ getOrganizationPermissionForUserGroup(userGroupId: string): Promise; /** * Update organization permission for the user or user group. * * @param permissionAssignments - new sets of permission assignments to the organization. Set permissions property for assignee to an empty array to remove the user's permissions. * * @returns promise */ updateOrganizationPermissions(permissionAssignments: IOrganizationPermissionAssignment[]): Promise; /** * Assigns workspace and or data source permissions to list of the assignees. * * @param permissionsAsignment - specification of the assignees and permissions to be assigned. * * @returns promise */ assignPermissions(permissionsAsignment: IPermissionsAssignment): Promise; /** * Revokes workspace and or data source permissions to list of the assignees. * * @param permissionsAsignment - specification of the assignees and permissions to be revoked. * * @returns promise */ revokePermissions(permissionsAsignment: IPermissionsAssignment): Promise; } /** * Provides functions to obtain {@link IOrganization} instances * * @public */ export declare interface IOrganizations { /** * Gets the organization the current user is part of. */ getCurrentOrganization(): Promise; } /** * This service provides access to organization settings * * @public */ export declare interface IOrganizationSettingsService { /** * Sets whiteLabeling for organization. * * @param whiteLabeling - describes whitelabeling setting for logoUrl, faviconUrl etc. * * @returns promise */ setWhiteLabeling(whiteLabeling: IWhiteLabeling): Promise; /** * Sets locale for organization. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setLocale(locale: string): Promise; /** * Sets metadata locale for organization. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setMetadataLocale(locale: string): Promise; /** * Sets format locale for organization. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setFormatLocale(locale: string): Promise; /** * Set separators for the organization * * @param separators - separators for the organization * * @returns promise */ setSeparators(separators: ISeparators): Promise; /** * Set active LLM endpoint for the organization. * * @param endpoint - id of the LLM endpoint to set as active for the organization. * * @returns promise */ setActiveLlmEndpoint(endpoint: string): Promise; /** * Deletes active LLM endpoint for the organization. * * @returns promise */ deleteActiveLlmEndpoint(): Promise; /** * Set active LLM provider for the organization. * * @param provider - id of the LLM provider to set as active for the organization. * @param defaultModelId - id of the default model to use for the provider. */ setActiveLlmProvider(provider: string, defaultModelId: string): Promise; /** * Deletes active LLM provider for the organization. */ deleteActiveLlmProvider(): Promise; /** * Sets timezone for organization. * * @param timezone - the value based on IANA time zone database naming convention. * for example: "America/Los_Angeles", etc. * * @returns promise */ setTimezone(timezone: string): Promise; /** * Sets whether end users may change the timezone in Analytical Designer and, by default, on dashboards. * * @param enabled - whether end users may change the timezone * * @returns promise * @alpha */ setEnableTimezoneChange(enabled: boolean): Promise; /** * Sets date format for organization. * * @param dateFormat - the format based on the ICU standard, for example: "en-US", "cs-CZ", etc. * * @returns promise */ setDateFormat(dateFormat: string): Promise; /** * Sets attachment size limit sent to email for organization. * * @param size - the size in bytes. * * @returns promise */ setAttachmentSizeLimit(size: number): Promise; /** * Sets the default CSV delimiter for exports in the organization. * * @param delimiter - single character delimiter to use for CSV exports. * * @returns promise * @alpha */ setExportCsvCustomDelimiter(delimiter: string): Promise; /** * Clears the organization CSV delimiter configuration so the default (comma) is used. * * @returns promise * @alpha */ deleteExportCsvCustomDelimiter(): Promise; /** * Sets first day of week for organization. * * @param weekStart - "Sunday | "Monday" * * @returns promise */ setWeekStart(weekStart: string): Promise; /** * Sets fiscal calendar for organization. * * @param fiscalYear - fiscal year configuration including month offset and optional prefixes. * * @returns promise */ setFiscalCalendar(fiscalYear: IFiscalYear): Promise; /** * Sets active calendars configuration for organization. * * @param calendars - configuration for which calendars are enabled and which is the default. * * @returns promise */ setActiveCalendars(calendars: IActiveCalendars): Promise; /** * Sets theme for organization. * * @param themeId - ID of the theme to apply to workspaces in organization. * * @returns promise */ setTheme(themeId: string): Promise; /** * Sets alert default * * @param value - describes parameters for alerting. * * @returns promise */ setAlertDefault(value: IAlertDefault): Promise; /** * Sets color palette for organization. * * @param colorPaletteId - ID of the color palette to apply to charts in organization. * * @returns promise */ setColorPalette(colorPaletteId: string): Promise; /** * Sets OpenAI configuration for organization. * * @param config - describes parameters for OpenAI integration. * * @returns promise * @alpha */ setOpenAiConfig(config: IOpenAiConfig): Promise; /** * Sets DashboardFiltersApplyMode configuration for organization. * * @param dashboardFiltersApplyMode - describes new mode for applying dashboard filters. * * @returns promise * @alpha */ setDashboardFiltersApplyMode(dashboardFiltersApplyMode: DashboardFiltersApplyMode): Promise; /** * Sets the default export template applied to slide exports when none is explicitly requested. * * @param value - identifier and scope of the export template to use as the default. * * @returns promise * @beta */ setDefaultExportTemplate(value: IDefaultExportTemplate): Promise; /** * Deletes the default export template setting from the organization, reverting to the built-in default. * * @returns promise * @beta */ deleteDefaultExportTemplate(): Promise; /** * Sets enable AI on data setting for organization. * * @param enabled - whether to enable sending aggregated data to LLM. * * @returns promise * @alpha */ setEnableAiOnData(enabled: boolean): Promise; /** * Sets AI rate limit for the organization. * * @param value - max interactions and rolling time window for AI chat. * * @returns promise * @alpha */ setAiRateLimit(value: IAiRateLimit): Promise; /** * Deletes AI rate limit override for the organization, reverting to the platform default. * * @returns promise * @alpha */ deleteAiRateLimit(): Promise; /** * Returns the AI rate limit value owned by the organization (without resolving inherited defaults). * Returns `undefined` when the organization has no override. * * @returns promise * @alpha */ getAiRateLimit(): Promise; /** * Sets enable drill to URL by default configuration for organization. * * @param enabled - whether to enable drill to URL by default for dashboard widgets. * * @returns promise * @alpha */ setEnableDrillToUrlByDefault(enabled: boolean): Promise; /** * Sets enable partial data results configuration for organization. * * @remarks * When enabled, executions that reach a row/column/cell limit return partial data (with limit-break * metadata) instead of failing. Workspaces inherit this value unless they override it. * * @param enabled - whether to allow partial data results for executions. * * @returns promise * @alpha */ setEnablePartialDataResults(enabled: boolean): Promise; /** * Sets enable null joins configuration for organization. * * @remarks * When enabled, generated SQL joins coalesce null values before comparing join keys. Workspaces inherit * this value unless they override it. * * @param enabled - whether to enable null value matching in SQL joins. * * @returns promise * @alpha */ setEnableNullJoins(enabled: boolean): Promise; /** * Sets enable query tags setting for organization. * * @param enabled - whether to enable query tags for this organization. * * @returns promise * @alpha */ setEnableQueryTags(enabled: boolean): Promise; /** * Deletes theme from organization settings returning workspace styling to default. * * @returns promise */ deleteTheme(): Promise; /** * Deletes color palette from organization settings returning chart colors to default. * * @returns promise */ deleteColorPalette(): Promise; /** * Sets metric format override for organization. * * @param override - mapping of metric types to custom format strings. * * @returns promise */ setMetricFormatOverride(override: IMetricFormatOverrideSetting): Promise; /** * Sets the maximum zoom level allowed for geo visualizations in the organization. * * @param level - maximum zoom level, or null to clear the limit. * * @returns promise */ setMaxZoomLevel(level: number | null): Promise; /** * Sets the geo icon sprite sheet URL for the organization. * * @param url - URL of the Mapbox sprite sheet (without file extension). * * @returns promise * @alpha */ setGeoIconSheet(url: string): Promise; /** * Deletes the geo icon sprite sheet setting from the organization. * * @returns promise * @alpha */ deleteGeoIconSheet(): Promise; /** * Returns effective organization settings with all defaults resolved. * * @remarks * The returned settings include system defaults, not just those directly set * at the organization level. User-specific overrides are excluded. * User has to have an organization level permission to access them. * * @returns promise of resolved settings */ getSettings(): Promise; } /** * This service provides access to organization styling settings such as theme. * * @public */ export declare interface IOrganizationStylingService { /** * Asynchronously returns the active theme for the organization. * * @remarks * Resolves the active theme setting and fetches the corresponding theme content. * Returns an empty theme when no active theme is configured or the fetch fails. * * @returns promise of theme */ getTheme(): Promise; /** * Request all themes defined on organization level. * * @returns promise of array of theme metadata objects */ getThemes(): Promise; /** * Request active theme setting from organization. * * @returns promise of theme object reference */ getActiveTheme(): Promise; /** * Set active theme setting in organization. * * @param themeRef - active theme reference * @returns promise */ setActiveTheme(themeRef: ObjRef): Promise; /** * Clear active theme setting from organization. * * @returns promise */ clearActiveTheme(): Promise; /** * Create new theme on organization level. * * @returns promise */ createTheme(theme: IThemeDefinition): Promise; /** * Update existing theme on organization level. * * @returns promise */ updateTheme(theme: IThemeDefinition): Promise; /** * Delete theme on organization level. * * @returns promise */ deleteTheme(themeRef: ObjRef): Promise; /** * Request all color palettes defined on organization level. * * @returns promise of array of color palette metadata objects */ getColorPalettes(): Promise; /** * Request active color palette setting from organization. * * @returns promise of color palette object reference */ getActiveColorPalette(): Promise; /** * Set active color palette setting in organization. * * @param colorPaletteRef - active color palette reference * @returns promise */ setActiveColorPalette(colorPaletteRef: ObjRef): Promise; /** * Clear active color palette setting from organization. * * @returns promise */ clearActiveColorPalette(): Promise; /** * Create new color palette on organization level. * * @returns promise */ createColorPalette(colorPalette: IColorPaletteDefinition): Promise; /** * Update existing color palette on organization level. * * @returns promise */ updateColorPalette(colorPalette: IColorPaletteDefinition): Promise; /** * Delete color palette on organization level. * * @returns promise */ deleteColorPalette(colorPaletteRef: ObjRef): Promise; } /** * Service to query valid filter elements for particular filter. * * @public */ export declare interface IOrganizationUserGroupsQuery { /** * Sets number of users to return per page. * Default size is specific per backend * * @param size - desired max number of organization users per page; must be a positive number * @returns organization users query */ withSize(size: number): IOrganizationUserGroupsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns organization users query */ withPage(page: number): IOrganizationUserGroupsQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns organization user groups query */ withFilter(filter: { workspace?: string; group?: string; name?: string; dataSource?: string; }): IOrganizationUserGroupsQuery; /** * Starts the organization users query. * * @returns promise of first page of the results */ query(): Promise; } /** * Paged result of organization users query. Last page of data returns empty items. * * @public */ export declare type IOrganizationUserGroupsQueryResult = IPagedResource; /** * This service provides access to organization users. * * @alpha */ export declare interface IOrganizationUserService { /** * Get user by ID. * * @param id - ID of the user. * * @returns promise */ getUser(id: string): Promise; /** * Creates a new user. * * @param user - user to create */ createUser(user: IUser): Promise; /** * Get user group by ID. * * @param id - ID of the user group. * * @returns promise */ getUserGroup(id: string): Promise; /** * Update user. * * @param user - The user that must be updated. * * @returns promise */ updateUser(user: IUser): Promise; /** * Create user group. * * @param group - The user group that must be created. * * @returns promise */ createUserGroup(group: IUserGroup): Promise; /** * Update user group. * * @param group - The user group that must be updated. * * @returns promise */ updateUserGroup(group: IUserGroup): Promise; /** * Delete users by ID. * * @param ids - ID of the user. * * @returns promise */ deleteUsers(ids: string[]): Promise; /** * Delete user groups by ID. * * @param ids - ID of the user group. * * @returns promise */ deleteUserGroups(ids: string[]): Promise; /** * Get list of users. * * @returns promise */ getUsers(): Promise; /** * Get list of users with basic information only. * * This method provides a lightweight alternative to {@link IOrganizationUserService.getUsers} * that fetches only basic user information (id, email, name) * * @returns promise */ getUsersSummary(): Promise; /** * Get user by email. * * @param email - email of the user. * * @returns promise of array of users */ getUsersByEmail(email: string): Promise; /** * List users. * * @returns promise */ getUsersQuery(): IOrganizationUsersQuery; /** * Get list of users groups. * * @returns promise */ getUserGroups(): Promise; /** * List user groups. * * @returns promise */ getUserGroupsQuery(): IOrganizationUserGroupsQuery; /** * Get groups assigned to the user. * * @param userId - ID of the user. * * @returns promise */ getUserGroupsOfUser(userId: string): Promise; /** * Get users assigned to the user group. * * @param userGroupId - ID of the user group. * * @returns promise */ getUsersOfUserGroup(userGroupId: string): Promise; /** * Add users to multiple user groups. * * @param userIds - IDs of the users that will be assigned to user groups. * @param userGroupIds - IDs of the users groups to which user will be assigned. * * @returns promise */ addUsersToUserGroups(userIds: string[], userGroupIds: string[]): Promise; /** * Remove users from user groups. * * @param userIds - IDs of the users. * @param userGroupIds - IDs of the user groups. * * @returns promise */ removeUsersFromUserGroups(userIds: string[], userGroupIds: string[]): Promise; } /** * Service to query valid filter elements for particular filter. * * @public */ export declare interface IOrganizationUsersQuery { /** * Sets number of users to return per page. * Default size is specific per backend * * @param size - desired max number of organization users per page; must be a positive number * @returns organization users query */ withSize(size: number): IOrganizationUsersQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than * total number of pages. * Default page: 0 * * @param page - zero indexed, must be non-negative * @returns organization users query */ withPage(page: number): IOrganizationUsersQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns organization users query */ withFilter(filter: { workspace?: string; group?: string; name?: string; dataSource?: string; email?: string; }): IOrganizationUsersQuery; /** * Starts the organization users query. * * @returns promise of first page of the results */ query(): Promise; } /** * Paged result of organization users query. Last page of data returns empty items. * * @public */ export declare type IOrganizationUsersQueryResult = IPagedResource; /** * @beta */ export declare interface IOutliersConfig { /** * Sensitivity of the outliers detection - e.g. "low" */ sensitivity: "low" | "medium" | "high"; /** * Granularity of the outlier detection, can be omitted, will be * determined automatically */ granularity?: "hour" | "day" | "week" | "month" | "quarter" | "year"; } /** * @beta */ export declare interface IOutliersResult { attributes: string[]; metrics: { localIdentifier: string; values: Array; }[]; } /** * Represents a outliers detection on current graph * @beta */ export declare interface IOutliersView { headerItems: (IResultHeader & IMeasureDescriptor)[]; anomalies: DataValue[][]; loading: boolean; } /** * Interface to interact with paged asynchronous resources * * @public */ export declare interface IPagedResource { readonly items: TItem[]; readonly limit: number; readonly offset: number; readonly totalCount: number; readonly cacheId?: string; /** * Request next page of the resource * * @returns promise of a paged resource with the results of next page */ next(): Promise>; /** * Request a specific page of the resource * * @param pageIndex - index of requested page: positive, zero-based * @returns promise of a paged resource with the results of selected page */ goTo(pageIndex: number): Promise>; /** * Request all the pages merged in a single array. * * @remarks * This MUST respect all the original query settings except for the paging settings (e.g. offset, limit). * * @returns promise of an array for all the pages' contents in one array */ all(): Promise; /** * Request all the pages merged in a single array and sort them using the given comparator. * * @remarks * This MUST respect all the original query settings except for the paging settings (e.g. offset, limit). * * @param compareFn - the compare function to use - the semantics are the same os for the Array.sort parameter * * @returns promise of an array for all the pages' contents in one array */ allSorted(compareFn: (a: TItem, b: TItem) => number): Promise; } /** * Service to query parameters. * * @public */ export declare interface IParametersQuery { /** * Sets number of parameters to return per page. * Default size: 50 * * @param size - desired max number of parameters per page must be a positive number * @returns parameters query */ withSize(size: number): IParametersQuery; /** * Sets starting page for the query. * * @param page - zero indexed, must be non-negative * @returns parameters query */ withPage(page: number): IParametersQuery; /** * Sets filter for the query. * * @param filter - filter to apply * @returns parameters query */ withFilter(filter: IFilterBaseOptions): IParametersQuery; /** * Sets sorting for the query. * * @param sort - sorting criteria in the format: property,(asc|desc) * @returns parameters query */ withSorting(sort: string[]): IParametersQuery; /** * Sets include for the query. * * @param include - include to apply * @returns parameters query */ withInclude(include: string[]): IParametersQuery; /** * Sets origin for the query. * * @param origin - origin to apply * @returns parameters query */ withOrigin(origin: ObjectOrigin | (string & {})): IParametersQuery; /** * Selects which backend endpoint flavor to use when listing parameters. * Default method: "GET" * * @param method - endpoint flavor to use ("GET" or "POST") * @returns parameters query * @beta */ withMethod(method: QueryMethod): IParametersQuery; /** * Starts the query. * * @returns promise of first page of the results */ query(): Promise; } /** * Queried parameters are returned in a paged representation. * * @public */ export declare type IParametersQueryResult = IPagedResource; /** * Request payload for patching a knowledge document. * Only provided fields will be updated. * @internal */ export declare interface IPatchKnowledgeDocumentRequest { isDisabled?: boolean; title?: string; scopes?: string[]; } /** * Specification of the assignees and permissions to be assigned / revoked to them. * * @alpha */ export declare interface IPermissionsAssignment { /** * List of the users to whom the permissions are assigned / revoked. */ assignees: IOrganizationAssignee[]; /** * List of the workspaces and permissions to assign / revoke to list of the assignees. */ workspaces?: Omit[]; /** * List of the data sources and permissions to assign / revoke to list of the assignees. */ dataSources?: Omit[]; } /** * Prepared execution already knows what data to calculate and allows to specify how the data should be * sorted and shaped into dimensions. * * @remarks * To this end, it provides several functions to customize sort items and dimensions. The prepared execution * is immutable and so all the customization functions WILL result in a new instance of prepared execution. * * The contract for creating these new instances is that the new prepared execution MUST be created using the * execution factory that created current execution. * * Note that even though the prepared executions are immutable, the abort signal itself is stateful * and is always propagated through the whole immutable chain. * If you don't want to cancel multiple executions simultaneously via single abort signal, * you need to set it on the outermost execution only, just before calling the execute method. * * @public */ export declare interface IPreparedExecution extends ICancelable { /** * Definition of the execution accumulated to so far. */ readonly definition: IExecutionDefinition; /** * Abort signal to cancel the execution or its result. */ readonly signal?: AbortSignal; /** * Arbitrary execution metadata provided by the caller. */ readonly context?: IExecutionContext; /** * Changes sorting of the resulting data. Any sorting settings accumulated so far WILL be wiped out. * * @param items - items to sort by * @returns new execution with the updated sorts */ withSorting(...items: ISortItem[]): IPreparedExecution; /** * Configures dimensions of the resulting data. Any dimension settings accumulated so far WILL be wiped out. * * @remarks * The realizations of analytical backend MAY impose constraints on the minimum and maximum number of dimensions. * This call WILL fail if the input dimensions do not match constraints imposed by the backend. * * @param dim - dimensions to set * @returns new execution with the updated dimensions */ withDimensions(...dim: Array): IPreparedExecution; /** * Configures buckets of the resulting data. Any dimension settings accumulated so far WILL be wiped out. * * @param buckets - buckets to set * @returns new execution with the updated buckets * @internal */ withBuckets(...buckets: IBucket[]): IPreparedExecution; /** * Adds the desired date format to the postProcessing of an IPreparedExecution. * * @param dateFormat - Format to be applied to the dates in an AFM execution response. * @returns new execution with the updated postProcessing */ withDateFormat(dateFormat: string): IPreparedExecution; /** * Starts the execution. */ execute(): Promise; /** * Starts the execution in explain mode. * @internal */ explain(config: ExplainConfig): IExplainProvider<(typeof config)["explainType"]>; /** * Tests whether this execution and the other execution are the same. * * @remarks * This effectively means that their definitions are deeply equal. * * If you are only concerned with the equality from the result calculation point of view, * consider comparing fingerprints instead. * * @param other - another execution */ equals(other: IPreparedExecution): boolean; /** * Fingerprint of this prepared execution. * * @remarks * This is effectively the fingerprint of the execution * definition underlying this instance of Prepared Execution. */ fingerprint(): string; /** * Additional execution configuration */ withExecConfig(config: IExecutionConfig): IPreparedExecution; /** * Attaches custom execution context metadata. * * @param context - metadata to associate with this execution * @returns new execution containing the provided context */ withContext(context: IExecutionContext): IPreparedExecution; } /** * @public */ export declare interface IPreparedExecutionOptions { /** * Signal to abort the execution or its result. */ signal?: AbortSignal; /** * Additional metadata to carry with the execution. */ context?: IExecutionContext; } /** * Custom title override for raw exports. * * @alpha */ export declare interface IRawExportCustomOverride { /** * Custom title for the object. */ title: string; } /** * Custom title overrides for raw exports. * * @alpha */ export declare interface IRawExportCustomOverrides { /** * Mapping of localId - custom override. */ measures?: Record; /** * Mapping of localId - custom override. */ displayForms?: Record; } /** * @alpha */ export declare interface IReferencesOption { direction: "up" | "down" | "both"; } /** * @alpha */ export declare interface IReferencesResult { nodes: (IdentifierRef & { title: string; isRoot?: boolean; })[]; edges: { from: IdentifierRef; to: IdentifierRef; }[]; } /** * @alpha */ export declare interface IReferencesService { getReferences(root: IdentifierRef | IdentifierRef[], opts?: IReferencesOption): Promise; } /** * Correlation metadata that will be included in HTTP requests. * The exact mechanism for including correlation metadata in requests * is determined by the specific sdk-backend-spi implementation. * * @public */ export declare interface IRequestCorrelationMetadata { /** * Key-value pairs for correlation metadata */ readonly [key: string]: string; } /** * Type guard checking whether input is an instance of {@link AbortError} * * @public */ export declare function isAbortError(obj: unknown): obj is AbortError; /** * Type guard checking whether input is an instance of {@link AnalyticalBackendError} * * @public */ export declare function isAnalyticalBackendError(obj: unknown): obj is AnalyticalBackendError; /** * Is chat conversation alert proposal content * @internal */ export declare function isChatConversationAlertProposalContent(content: IChatConversationMultipartPart): content is IChatConversationAlertProposalContent; /** * Is chat conversation catalog search detail * @internal */ export declare function isChatConversationCatalogSearchDetail(detail: unknown): detail is IChatConversationCatalogSearchDetail; /** * Is chat conversation dashboard content * @internal */ export declare function isChatConversationDashboardContent(content: IChatConversationMultipartPart): content is IChatConversationDashboardContent; /** * Is chat conversation error * @internal */ export declare function isChatConversationError(item: Partial): item is IChatConversationError; /** * Is chat conversation interaction step * @internal */ export declare function isChatConversationInteractionStep(item: unknown): item is IChatConversationInteractionStep; /** * Is chat conversation item * @internal */ export declare function isChatConversationItem(item: unknown): item is IChatConversationItem; /** * Is chat conversation key driver analysis content * @internal */ export declare function isChatConversationKeyDriverAnalysisContent(content: IChatConversationMultipartPart): content is IChatConversationKeyDriverAnalysisContent; /** * Is chat conversation multipart content * @internal */ export declare function isChatConversationMultipartContent(content: IChatConversationContent): content is IChatConversationMultipartContent; /** * Is chat conversation reasoning content * @internal */ export declare function isChatConversationReasoningContent(content: IChatConversationContent): content is IChatConversationReasoningContent; /** * Is chat conversation search content * @internal */ export declare function isChatConversationSearchContent(content: IChatConversationMultipartPart): content is IChatConversationSearchContent; /** * Is chat conversation text content * @internal */ export declare function isChatConversationTextContent(content: IChatConversationContent): content is IChatConversationTextContent; /** * Is chat conversation tool call content * @internal */ export declare function isChatConversationToolCallContent(content: IChatConversationContent): content is IChatConversationToolCallContent; /** * Is chat conversation tool result content * @internal */ export declare function isChatConversationToolResultContent(content: IChatConversationContent): content is IChatConversationToolResultContent; /** * Is chat conversation visualization content * @internal */ export declare function isChatConversationVisualisationContent(content: IChatConversationMultipartPart): content is IChatConversationVisualisationContent; /** * Is chat conversation key driver analysis content * @internal */ export declare function isChatConversationWhatIfContent(content: IChatConversationMultipartPart): content is IChatConversationWhatIfContent; /** * Type guard checking whether input is an instance of {@link ContractExpired} * * @public */ export declare function isContractExpired(obj: unknown): obj is ContractExpired; /** * Has dashboard layout only empty sections and widgets? * @alpha */ export declare const isDashboardLayoutEmpty: (layout: IDashboardLayout) => boolean; /** * Type guard checking whether input is an instance of {@link DataTooLargeError} * * @public */ export declare function isDataTooLargeError(obj: unknown): obj is DataTooLargeError; /** * Options for a knowledge base semantic search. * @internal */ export declare interface ISearchKnowledgeOptions { limit?: number; minScore?: number; scopes?: string[]; } /** * Response from a knowledge base semantic search. * @internal */ export declare interface ISearchKnowledgeResponse { results: IKnowledgeSearchResult[]; statistics: IKnowledgeSearchStatistics; } /** * This service provides access to security settings defined on backend. * * @public */ export declare interface ISecuritySettingsService { /** * The scope in which is security settings accessed (URI of organization, workspace, user profile). */ readonly scope: string; /** * Validate URL against backend list of allowed URLs. * * @param url - URL for validation. * @param context - context in which the URL must be valid. * @returns promise with boolean: true when validated URL is allowed as external host, false if it is not. */ isUrlValid(url: string, context: ValidationContext): Promise; /** * Validate plugin URL against list of allowed hosting locations. * * @remarks * Dashboard plugins MUST be loaded only from allowed locations. If the plugin is hosted elsewhere, it * MUST NOT be loaded. * * @param url - plugin content URL * @param workspace - workspace in context of which the validation is done */ isDashboardPluginUrlValid(url: string, workspace: string): Promise; } /** * Type guard checking whether the object is an instance of {@link IElementsQueryOptionsElementsByPrimaryDisplayFormValue}. * * @public */ export declare function isElementsQueryOptionsElementsByPrimaryDisplayFormValue(obj: unknown): obj is IElementsQueryOptionsElementsByPrimaryDisplayFormValue; /** * Type guard checking whether the object is an instance of {@link IElementsQueryOptionsElementsByValue}. * * @public */ export declare function isElementsQueryOptionsElementsByValue(obj: unknown): obj is IElementsQueryOptionsElementsByValue; /** * Semantic quality service. * @internal */ export declare interface ISemanticQualityService { /** * Returns a report of quality issues detected in the workspace metadata. */ getQualityReport(options?: { signal?: AbortSignal; }): Promise; /** * Triggers asynchronous calculation of metadata quality issues. */ triggerQualityIssuesCalculation(): Promise; } /** * Semantic search query. * @beta */ export declare interface ISemanticSearchQuery { /** * Define a search term for the search. */ withQuestion(question: string): ISemanticSearchQuery; /** * Define a limit for the number of results returned by the search. */ withLimit(limit: number): ISemanticSearchQuery; /** * Define a list of object types to search for. */ withObjectTypes(types: GenAIObjectType[]): ISemanticSearchQuery; /** * Define whether the search should be deep or not. */ withDeepSearch(deepSearch: boolean): ISemanticSearchQuery; /** * Filter relationships and results based on allowed relationship type combinations. * When specified, only relationships matching the allowed types are returned. */ withAllowedRelationshipTypes(types: IAllowedRelationshipType[]): ISemanticSearchQuery; /** * The list of tags the returned objects must have. */ withIncludeTags(tags: string[]): ISemanticSearchQuery; /** * The list of tags the returned objects must not have. */ withExcludeTags(tags: string[]): ISemanticSearchQuery; /** * Execute the search. */ query(options?: { signal?: AbortSignal; }): Promise; } export { ISemanticSearchResult } /** * Type guard checking whether input is an instance of {@link LimitReached} * * @public */ export declare function isLimitReached(obj: unknown): obj is LimitReached; /** * Type guard checking whether input is an instance of {@link NoDataError} * * @public */ export declare function isNoDataError(obj: unknown): obj is NoDataError; /** * Type guard checking whether input is an instance of {@link NotAuthenticated} * * @public */ export declare function isNotAuthenticated(obj: unknown): obj is NotAuthenticated; /** * Type guard checking whether input is an instance of {@link NotImplemented} * * @public */ export declare function isNotImplemented(obj: unknown): obj is NotImplemented; /** * Type guard checking whether input is an instance of {@link NotSupported} * * @public */ export declare function isNotSupported(obj: unknown): obj is NotSupported; /** * Type guard checking whether input is an instance of {@link PermissionEscalationRefused} * * @alpha */ export declare function isPermissionEscalationRefused(obj: unknown): obj is PermissionEscalationRefused; /** * Type guard checking whether input is an instance of {@link ProtectedDataError} * * @public */ export declare function isProtectedDataError(obj: unknown): obj is ProtectedDataError; /** * Type guard checking whether input is an instance of {@link TimeoutError} * * @public */ export declare function isTimeoutError(obj: unknown): obj is TimeoutError; /** * Type guard checking whether input is an instance of {@link UnexpectedResponseError} * * @public */ export declare function isUnexpectedError(obj: unknown): obj is UnexpectedError; /** * Type guard checking whether input is an instance of {@link UnexpectedResponseError} * * @public */ export declare function isUnexpectedResponseError(obj: unknown): obj is UnexpectedResponseError; /** * Type guard checking whether the object is an instance of {@link IElementsQueryOptionsElementsByValue} or {@link IElementsQueryOptionsElementsByPrimaryDisplayFormValue}. * * @public */ export declare function isValueBasedElementsQueryOptionsElements(obj: unknown): obj is IElementsQueryOptionsElementsByValue | IElementsQueryOptionsElementsByPrimaryDisplayFormValue; /** * Parsed {@link https://help.gooddata.com/pages/viewpage.action?pageId=86795279 | MAQL} text. * * @remarks * See {@link IMeasureExpressionToken} for more information. * * @public */ export declare interface ITextExpressionToken { /** * Expression token type */ type: "text" | "quoted_text" | "number"; /** * Plain text */ value: string; } /** * Request payload for upserting a knowledge document. * Creates the document if it does not exist, updates it otherwise. * * Note: Uses the browser `File` API. This interface is only intended * for browser-based consumers. * * @internal */ export declare interface IUpsertKnowledgeDocumentRequest { file: File; } /** * Represents a user. It is an entry point to various services that can be used to inspect and modify the user. * * @public */ export declare interface IUserService { /** * Returns service that can be used to obtain settings that are currently in effect for the user. * * @returns user settings service */ settings(): IUserSettingsService; /** * Returns currently authenticated user */ getUser(): Promise; /** * Returns currently authenticated user with details */ getUserWithDetails(): Promise; } export { IUserSettings } /** * This query service provides access to feature flags that are in effect for particular user. * * @public */ export declare interface IUserSettingsService { /** * Asynchronously queries actual feature flags. * * @returns promise of the feature flags of the current user */ getSettings(): Promise; /** * Set locale for the current user * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setLocale(locale: string): Promise; /** * Set metadata locale for the current user * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setMetadataLocale(locale: string): Promise; /** * Set format locale for the current user * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setFormatLocale(locale: string): Promise; /** * Set separators for the current user * * @param separators - separators for the current user * * @returns promise */ setSeparators(separators: ISeparators): Promise; } export { IUserWorkspaceSettings } /** * Pair of the widget and it's alert count * @alpha */ export declare interface IWidgetAlertCount { /** * Widget reference */ readonly ref: ObjRef; /** * Number of alerts for the referenced widget */ readonly alertCount: number; } /** * Contains information about objects that may be referenced by a widget. The contents of this object * depend on the widget and the types requested at the time of call to getWidgetReferencedObjects. * * @alpha */ export declare interface IWidgetReferences { /** * If requested, measures referenced by the widget will be returned here. * If none of them were requested, the catalogItems will be undefined. */ catalogItems?: CatalogItem[]; } /** * Widget with it's layout path * @alpha */ export declare interface IWidgetWithLayoutPath { path: LayoutPath; widget: TWidget; } /** * Service to manage access to the objects. * * @alpha */ export declare interface IWorkspaceAccessControlService { getAccessList(sharedObject: ObjRef): Promise; grantAccess(sharedObject: ObjRef, grantees: IAccessGrantee[]): Promise; revokeAccess(sharedObject: ObjRef, grantees: IAccessGrantee[]): Promise; /** * Function that allows to change access (add, edit, revoke) to an object for multiple grantees. * If the grantee permissions array is empty, the access is revoked. Otherwise, it is set to the * permissions in the array. * * If backend does not support granular permissions, the array content is used only to check if * access should be granted or revoked. * * @param sharedObject - the ref of object that will have access changed * @param grantees - list of grantees that will have access changed for the shared object */ changeAccess(sharedObject: ObjRef, grantees: IGranularAccessGrantee[]): Promise; /** * Get list of available grantees for the shared object. * @param sharedObject - the ref of object that will have access changed * @param search - optional string used to limit the results (matched against name of user group, * or first name, last name, or email of user). */ getAvailableGrantees(sharedObject: ObjRef, search?: string): Promise; } /** * This service provides access to AI agents available in a workspace. * * @alpha */ export declare interface IWorkspaceAgentsService { /** * Get agents query. * * @returns agents query */ getAgentsQuery(): IAgentsQuery; } /** * Service for querying additional attributes and attribute display forms data, and their elements. * * @remarks * If you want to query attributes themselves, use catalog {@link IWorkspaceCatalogFactory} * * @public */ export declare interface IWorkspaceAttributesService { /** * Returns service that can be used to query attribute elements for attributes defined in this workspace. * * @remarks * For instance if workspace has data set Employee with attribute Name, then this service can be used to retrieve * names of all employees. */ elements(): IElementsQueryFactory; /** * Gets the attribute display form with the provided identifier. * @param ref - ref of the attribute display form to retrieve * @returns promise of attribute display form metadata object */ getAttributeDisplayForm(ref: ObjRef): Promise; /** * Gets the list of metadata of attribute display form with the provided list of uris or identifiers. (list of object refs). * * @remarks * If a display form referenced by any of the refs does not exist, then the call must not fail and instead return only * those display forms that exist. * * @param refs - list of refs of the attribute display form to retrieve. * @returns promise of list of attribute display form metadata object. */ getAttributeDisplayForms(refs: ObjRef[]): Promise; /** * Gets metadata of the attribute for particular display form reference. * * @param ref - ref of the display form to retrieve attribute for * @returns promise of attribute metadata object */ getAttributeByDisplayForm(ref: ObjRef): Promise; /** * Gets metadata of the attribute. * * @param ref - ref of the attribute to retrieve * @param opts - options to include additional data * @returns promise of attribute metadata object */ getAttribute(ref: ObjRef, opts?: { include?: ["dataset"]; }): Promise; /** * Updates metadata of the attribute. * * @param updatedAttribute - update to apply */ updateAttributeMeta(updatedAttribute: Partial & IMetadataObjectIdentity): Promise; /** * Gets the list of metadata of attribute with the provided list of uris. (list of object refs) * * @remarks * If a display form referenced by any of the refs does not exist, then the call must not fail and instead return only * those display forms that exist. * * @param refs - list of refs of the attribute to retrieve. * @returns promise of list of attribute metadata object. */ getAttributes(refs: ObjRef[]): Promise; /** * Request list of attributes that are "center of star" for the input attributes in the data model. * * @param attributeRefs - input list of attribute references * @returns promise returning list of attribute references. * It can be one of the input attributes or another attribute(s) * that connects the input attributes in the data model. */ getCommonAttributes(attributeRefs: ObjRef[]): Promise; /** * Request the "center of star" for multiple series of attributes. * * @param attributesRefsBatch - input batch of list of attribute references * @returns promise returning batch of attribute references. */ getCommonAttributesBatch(attributesRefsBatch: ObjRef[][]): Promise; /** * Get information about the given attribute's dataset * @param ref - ref of the attribute * @returns promise of metadata object */ getAttributeDatasetMeta(ref: ObjRef): Promise; /** * Get attributes with their related objects, by their respective display forms. * @param refs - refs of the attributes * @returns promise of attributes with their related objects */ getAttributesWithReferences(displayFormRefs: ObjRef[]): Promise; /** * Request list of attributes that have a connection with specified display form in the data model. * * @param ref - attribute display form reference whose connections we need to find * @returns promise of array of connected attribute references */ getConnectedAttributesByDisplayForm(ref: ObjRef): Promise; /** * Attributes query factory. * * @returns attributes query */ getAttributesQuery(): IAttributesQuery; } /** * This service provides access to workspace automations. * * @alpha */ export declare interface IWorkspaceAutomationService { /** * List automations * * @param options - specify additional options * @returns methods for querying automations */ getAutomationsQuery(options?: IGetAutomationsQueryOptions): IAutomationsQuery; /** * Get all automations * * @param options - specify additional options * @returns Promise resolved with array of automations. * @throws In case of error. * */ getAutomations(options?: IGetAutomationsOptions): Promise; /** * Get atuomation by id * * @param id - id of the automation * @param options - specify additional options * @returns Promise resolved with automation definition */ getAutomation(id: string, options?: IGetAutomationOptions): Promise; /** * Create new automation * * @param automation - definition of the automation * @param options - specify additional options * @param widgetExecution - execution definition for widget exports * @param overrides - custom overrides for widget exports * @returns Promise resolved with created automation. */ createAutomation(automation: IAutomationMetadataObjectDefinition, options?: IGetAutomationOptions, widgetExecution?: IExecutionDefinition, overrides?: IRawExportCustomOverrides): Promise; /** * Update existing automation * * @param automation - definition of the automation * @param options - specify additional options * @param widgetExecution - execution definition for widget exports * @param overrides - custom overrides for widget exports * @returns Promise resolved when the automation is updated. */ updateAutomation(automation: IAutomationMetadataObject, options?: IGetAutomationOptions, widgetExecution?: IExecutionDefinition, overrides?: IRawExportCustomOverrides): Promise; /** * Unsubscribe automation * * @param id - id of the automation * @returns Promise resolved when the automation is unsubscribed. */ unsubscribeAutomation(id: string): Promise; /** * Delete automation * * @param id - id of the automation * @returns Promise resolved when the automation is deleted. */ deleteAutomation(id: string): Promise; /** * Delete automations * * Deletes multiple automations identified by their IDs. * * @param ids - IDs of the automations to delete * @returns Promise resolved when the automations are deleted. */ deleteAutomations(ids: string[]): Promise; /** * Unsubscribe from automations * * Unsubscribes current user from multiple automations identified by their IDs. * If no IDs are provided, the backend may unsubscribe from all automations in the workspace. * * @param ids - IDs of the automations to unsubscribe from * @returns Promise resolved when the user is unsubscribed. */ unsubscribeAutomations(ids: string[]): Promise; /** * Pause automation * * @param id - id of the automation * @returns Promise resolved when the automation is paused. */ pauseAutomation(id: string): Promise; /** * Pause automations * * Pauses multiple automations identified by their IDs. * * @param ids - IDs of the automations to pause * @returns Promise resolved when the automations are paused. */ pauseAutomations(ids: string[]): Promise; /** * Resume automation * * @param id - id of the automation * @returns Promise resolved when the automation is resumed. */ resumeAutomation(id: string): Promise; /** * Resume automations * * Resumes multiple automations identified by their IDs. * * @param ids - IDs of the automations to resume * @returns Promise resolved when the automations are resumed. */ resumeAutomations(ids: string[]): Promise; /** * Trigger existing automation * * Triggers the existing automation to execute immediately. * * @param id - id of the automation * @returns Promise resolved when the automation is triggered. */ triggerAutomation(id: string): Promise; } /** * Instance of workspace catalog with loaded items * * @public */ export declare interface IWorkspaceCatalog extends IWorkspaceCatalogMethods { /** * Get only items that are valid for specific insight or execution items. * * @returns catalog available items factory */ availableItems(): IWorkspaceCatalogAvailableItemsFactory; } /** * Service to obtain only valid items for a particular execution or insight. * * @remarks * This is useful for interactive insight/execution creation. * (catalog will offer you only valid items that you can add to your insight/execution) * * @public */ export declare interface IWorkspaceCatalogAvailableItemsFactory extends IWorkspaceCatalogFactoryMethods { /** * Setup catalog to fetch only items that are valid for the provided execution items * * @param items - execution items * @returns catalog available items factory */ forItems(items: IAttributeOrMeasure[]): IWorkspaceCatalogAvailableItemsFactory; /** * Setup catalog to fetch only items that are valid for the provided insight definition * * @param insight - insight definition * @returns catalog available items factory */ forInsight(insight: IInsightDefinition): IWorkspaceCatalogAvailableItemsFactory; /** * Fetch available catalog items for the current setup * * @returns promise of catalog with loaded available items */ load(): Promise; } /** * Catalog is useful for: * - Interactive insight/execution creation * - Exporting execution model for a specific workspace * * @public */ export declare interface IWorkspaceCatalogFactory extends IWorkspaceCatalogFactoryMethods { /** * Workspace whose catalog is being loaded. */ readonly workspace: string; /** * Options set for the loader so far. */ readonly options: IWorkspaceCatalogFactoryOptions; /** * Get catalog items for the current configuration. * Returns items that are either not "unlisted" or that are created by the current user. * * @returns promise of catalog with loaded items */ load(): Promise; } /** * Common methods for catalog configuration * * @public */ export declare interface IWorkspaceCatalogFactoryMethods { /** * Setup catalog to fetch only items of the provided dataset * * @param dataset - dataset reference * @returns catalog factory */ forDataset(dataset: ObjRef): TFactory; /** * Setup catalog to fetch only items of the provided types (attribute, measure, fact or dateDataset) * * @param types - catalog item types * @returns catalog factory */ forTypes(types: CatalogItemType[]): TFactory; /** * Setup catalog to fetch only items with provided tags * * @param tags - tags references * @returns catalog factory */ includeTags(tags: ObjRef[]): TFactory; /** * Setup catalog to fetch only items without provided tags * * @param tags - tags references * @returns catalog factory */ excludeTags(tags: ObjRef[]): TFactory; /** * Setup whether catalog should fetch groups. * Default: true * * @param loadGroups - should fetch groups * @returns catalog factory */ withGroups(loadGroups: boolean): TFactory; /** * Setup catalog to fetch only items for specific options * * @param options - catalog options * @returns catalog factory */ withOptions(options: Partial): TFactory; /** * Setup to use abort signal * * @param signal - abort signal * @returns catalog factory */ withSignal(signal: AbortSignal): TFactory; } /** * Configuration options for querying catalog items * * @public */ export declare interface IWorkspaceCatalogFactoryOptions { /** * Get catalog items from a specific dataset */ dataset?: ObjRef; /** * Get catalog items of specific types (attribute, measure, fact, dateDataset or attributeHierarchy) * Default: ["attribute", "measure", fact", "dateDataset", "attributeHierarchy"] */ types: CatalogItemType[]; /** * Get catalog items that have reference to specific tags. * This is commonly used to obtain catalog items from specific group(s). */ includeTags: ObjRef[]; /** * Get catalog items that don't have reference to specific tags * Use this to obtain catalog items that are not included in specific group(s). */ excludeTags: ObjRef[]; /** * When true, get only production ready catalog items. * When false, get only non-production ready catalog items. * Otherwise, return both. * Default: undefined */ production?: boolean; /** * Optional list of additional date dataset granularities that must be added by backend to the * ones returned by default. * Default: undefined */ includeDateGranularities?: string[]; /** * Should catalog fetch groups? * Default: true */ loadGroups?: boolean; /** * Search for catalog items by title or identifier. */ search?: string; } /** * Common methods to obtain catalog items * * @public */ export declare interface IWorkspaceCatalogMethods { /** * Get all catalog groups * * @returns array of catalog groups */ groups(): ICatalogGroup[]; /** * Get all catalog items * * @returns array of catalog items */ allItems(): CatalogItem[]; /** * Get all catalog attributes * * @returns array of catalog attribtues */ attributes(): ICatalogAttribute[]; /** * Get all catalog measures * * @returns array of catalog measures */ measures(): ICatalogMeasure[]; /** * Get all catalog facts * * @returns array of catalog facts */ facts(): ICatalogFact[]; /** * Get all catalog date datasets * * @returns array of catalog date datasets */ dateDatasets(): ICatalogDateDataset[]; /** * Get all catalog attribute hierarchies * * @returns array of catalog attribute hierarchies */ attributeHierarchies(): ICatalogAttributeHierarchy[]; } /** * Instance of workspace catalog with loaded available items. * * @public */ export declare interface IWorkspaceCatalogWithAvailableItems extends IWorkspaceCatalogMethods { /** * Get all available catalog items * * @returns array of available catalog items */ allAvailableItems(): CatalogItem[]; /** * Get all available catalog attributes * * @returns array of available catalog attributes */ availableAttributes(): ICatalogAttribute[]; /** * Get all available catalog measures * * @returns array of available catalog measures */ availableMeasures(): ICatalogMeasure[]; /** * Get all available catalog facts * * @returns array of available catalog facts */ availableFacts(): ICatalogFact[]; /** * Get all available catalog date datasets * * @returns array of available catalog date datasets */ availableDateDatasets(): ICatalogDateDataset[]; /** * Get all available catalog attribute hierarchies * * @returns array of available catalog attribute hierarchies */ availableAttributeHierarchies(): ICatalogAttributeHierarchy[]; } /** * Configuration options for querying catalog available items * * @public */ export declare interface IWorkspaceCatalogWithAvailableItemsFactoryOptions extends IWorkspaceCatalogFactoryOptions { /** * Get only catalog items that are available for the provided execution items */ items?: IAttributeOrMeasure[]; /** * Get only items that are available for the provided insight */ insight?: IInsightDefinition; } /** * Service to list, create and update analytical dashboards * * @alpha */ export declare interface IWorkspaceDashboardsService { readonly workspace: string; /** * Gets all dashboards available in current workspace. * * @param options - Specify additional options * @returns promise of list of the dashboards */ getDashboards(options?: IGetDashboardOptions): Promise; /** * List dashboards * * @returns methods for querying dashboards */ getDashboardsQuery(): IDashboardsQuery; /** * Load dashboard by its reference, * and override filter context with the given custom filter context * (custom filter context is used mainly for exporting) * * @param ref - dashboard ref * @param filterContextRef - Override dashboard filter context with the custom filter context * (This allows to modify filter context when exporting the dashboard) * @param options - Specify additional options * @returns promise of the dashboard */ getDashboard(ref: ObjRef, filterContextRef?: ObjRef, options?: IGetDashboardOptions): Promise; /** * Loads a dashboard and objects that the dashboard references. * * @param ref - dashboard ref * @param filterContextRef - Override dashboard filter context with the custom filter context * (This allows to modify filter context when exporting the dashboard) * @param options - Specify additional options * @param types - types of dashboard references to load; if the types are undefined, the service * must default to loading insights related to the dashboard * @returns promise of the dashboard and references */ getDashboardWithReferences(ref: ObjRef, filterContextRef?: ObjRef, options?: IGetDashboardOptions, types?: SupportedDashboardReferenceTypes[]): Promise; /** * Get objects referenced by a given dashboard. * * @param dashboard - dashboard to get referenced objects for * @param types - optional array of object types to include, when not specified, all supported references will * be retrieved */ getDashboardReferencedObjects(dashboard: IDashboard, types?: SupportedDashboardReferenceTypes[]): Promise; /** * Get the metadata stored with the export identified by the provided export id: the inlined * filter context together with other export-render inputs (title, widget-title visibility, * custom metadata and the explicit timezone). * * @remarks * The timezone is present only when it cannot be derived at export time (an ad-hoc view-mode * override or a resolved browser-detected timezone); otherwise the dashboard's own stored * timezone applies. * * @param exportId - export id * @param type - export type * @param tabId - id of the tab to export */ getExportDataByExportId(exportId: string, type: "visual" | "slides" | undefined, tabId?: string): Promise<{ filterContext?: IFilterContext; title?: string; hideWidgetTitles?: boolean; exportMetadata?: Record; timezoneId?: string; } | null>; /** * Create and save dashboard for the provided dashboard definition * * @param dashboard - dashboard definition * @returns promise of the created dashboard */ createDashboard(dashboard: IDashboardDefinition): Promise; /** * Update dashboard * * @param dashboard - original dashboard before modifications * @param updatedDashboard - modified dashboard * @returns promise of the updated dashboard */ updateDashboard(dashboard: IDashboard, updatedDashboard: IDashboardDefinition): Promise; /** * Patch dashboard * * @param updatedDashboard - modified dashboard * @returns promise of the updated dashboard */ updateDashboardMeta(updatedDashboard: IDashboardObjectIdentity & Partial): Promise; /** * Sets dashboard certification metadata. * * @param ref - dashboard reference * @param certification - certification state; undefined clears certification */ setCertification(ref: ObjRef, certification?: IObjectCertificationWrite): Promise; /** * Delete dashboard * * @param ref - dashboard reference * @returns promise */ deleteDashboard(ref: ObjRef): Promise; /** * Export dashboard to pdf. You can override dashboard filters with custom filters. * When no custom filters are set, the persisted dashboard filters will be used. * * PDF file is downloaded and attached as Blob data to the current window instance. * * @param ref - dashboard reference * @param filters - Override stored dashboard filters with custom filters * @param options - export options * @returns promise with object URL pointing to a Blob data of downloaded exported dashboard */ exportDashboardToPdf(ref: ObjRef, filters?: FilterContextItem[], filtersByTab?: FiltersByTab, options?: IDashboardExportPdfOptions): Promise; /** * Export dashboard to pdf. You can override dashboard filters with custom filters. * When no custom filters are set, the persisted dashboard filters will be used. * * PDF file is downloaded and attached as Blob data to the current window instance. * * @param ref - dashboard reference * @param format - export format * @param filters - Override stored dashboard filters with custom filters * @param filtersByTab - Override stored dashboard filters per tab with custom filters * @param options - additional options * @returns promise with object URL pointing to a Blob data of downloaded exported dashboard */ exportDashboardToPresentation(ref: ObjRef, format: "PDF" | "PPTX", filters?: FilterContextItem[], filtersByTab?: FiltersByTab, options?: IDashboardExportPresentationOptions): Promise; /** * Export dashboard to png. * * PNG file is downloaded and attached as Blob data to the current window instance. * If title is not provided, the dashboard title will be fetched. * * @param ref - dashboard reference * @param filters - Override stored dashboard filters with custom filters * @param filtersByTab - Override stored dashboard filters per tab with custom filters * @param options - export options * @returns promise with object URL pointing to a Blob data of downloaded exported dashboard */ exportDashboardToImage(ref: ObjRef, filters?: FilterContextItem[], filtersByTab?: FiltersByTab, options?: IDashboardExportImageOptions): Promise; /** * Export dashboard to tabular. * * Tabular file is downloaded and attached as Blob data to the current window instance. * If title is not provided, the dashboard title will be fetched. * * @param ref - dashboard reference * @param options - export options * @returns promise with object URL pointing to a Blob data of downloaded exported dashboard */ exportDashboardToTabular(ref: ObjRef, options?: IDashboardExportTabularOptions): Promise; /** * Export dashboard to CSV raw. * * CSV raw file is downloaded and attached as Blob data to the current window instance. * * @param definition - execution definition * @param fileName - name of the file * @param customOverrides - custom title overrides for measures and display forms * @param options - export options * @returns promise with object URL pointing to a Blob data of downloaded exported dashboard */ exportDashboardToCSVRaw(definition: IExecutionDefinition, fileName: string, customOverrides?: IRawExportCustomOverrides, options?: IDashboardExportRawOptions): Promise; /** * Create scheduled mail for the dashboard * * @param scheduledMail - scheduled email definition * @param exportFilterContext - override dashboard filter context with the custom filter context during the export * @returns promise of the created scheduled email */ createScheduledMail(scheduledMail: IScheduledMailDefinition, exportFilterContext?: IFilterContextDefinition): Promise; /** * Update existing scheduled mail for the dashboard * * @param ref - reference to the existing scheduled email object * @param scheduledMail - scheduled email definition * @param filterContextRef - optional reference to an existing filter context to be used in all attachments * @returns promise of the updated scheduled email */ updateScheduledMail(ref: ObjRef, scheduledMail: IScheduledMailDefinition, filterContextRef?: ObjRef): Promise; /** * Delete scheduled mail * * @param ref - scheduled email reference * @returns promise */ deleteScheduledMail(ref: ObjRef): Promise; /** * Get scheduled emails for particular dashboard * * @param ref - dashboard reference * @param options - specify additional options * @returns promise with scheduled emails connected to the dashboard */ getScheduledMailsForDashboard(ref: ObjRef, options?: IGetScheduledMailOptions): Promise; /** * Get the number of scheduled emails for particular dashboard * * @param ref - dashboard reference * @returns promise with the number of scheduled emails connected to the dashboard */ getScheduledMailsCountForDashboard(ref: ObjRef): Promise; /** * Get all widget alerts for the current user * * @returns promise with all user widget alerts */ getAllWidgetAlertsForCurrentUser(): Promise; /** * Get all widget alerts for the current user for the given dashboard * * @param ref - dashboard reference * @returns promise with all user widget alerts for the dashboard */ getDashboardWidgetAlertsForCurrentUser(ref: ObjRef): Promise; /** * Get the number of widget alerts (created by any user) for particular widgets * * @param refs - widget references * @returns promise with array of pairs of widget ref and alert count */ getWidgetAlertsCountForWidgets(refs: ObjRef[]): Promise; /** * Create widget alert for the provided widget alert definition * * @param alert - widget alert definition * @returns promise with the created alert */ createWidgetAlert(alert: IWidgetAlertDefinition): Promise; /** * Update widget alert * * @param alert - updated widget alert * @returns promise with the updated alert */ updateWidgetAlert(alert: IWidgetAlert | IWidgetAlertDefinition): Promise; /** * Delete widget alert with the given reference * * @param ref - widget alert reference * @returns promise */ deleteWidgetAlert(ref: ObjRef): Promise; /** * Widget alerts bulk delete * * @param refs - widget alerts references * @returns promise */ deleteWidgetAlerts(refs: ObjRef[]): Promise; /** * Get all metadata objects referenced by a given widget. * * @param widget - widget to get referenced objects for * @param types - optional array of object types to include, when not specified, all supported references will * be retrieved */ getWidgetReferencedObjects(widget: IWidget, types?: SupportedWidgetReferenceTypes[]): Promise; /** * Takes a widget and a list of filters and returns filters that can be used for the widget. * - for attribute filters, these are filters that should NOT be ignored according to the ignoreDashboardFilters property. * - for date filters it is the last filter with the same date dimension as specified in dateDataSet property. * DOES NOT SUPPORT MULTIPLE DATE FILTERS. If you want to provide multiple date filters, pls refer to getResolvedFiltersForWidgetWithMultipleDateFilters * * The implementation MUST take different ObjRef types into account, for example if an incoming filter * uses idRef and an ignoreDashboardFilters item uses uriRef but they point to the same metadata object, * the filter MUST NOT be included in the result. * * @param widget - widget to get filters for * @param filters - filters to apply on the widget * @param attributeFilterConfigs - filter configs * @returns promise with the filters with the ignored filters removed */ getResolvedFiltersForWidget(widget: IWidget, filters: IFilter[], attributeFilterConfigs: IDashboardAttributeFilterConfig[]): Promise; /** * Takes a widget, commonDateFilters and a list of other filters and returns filters that can be used for the widget. * - common date filters are used only when match widget's date data set. If multiple of them match the last one is used * - other date filters - these are filters that should NOT be ignored according to the ignoreDashboardFilters property. May have date data sets different from one in widget's definition * - for attribute filters - these are filters that should NOT be ignored according to the ignoreDashboardFilters property. * * The implementation MUST take different ObjRef types into account, for example if an incoming filter * uses idRef and an ignoreDashboardFilters item uses uriRef but they point to the same metadata object, * the filter MUST NOT be included in the result. * * @param widget - widget to get filters for * @param commonDateFilters - date filters to apply on the widget only when matching its date dataSet * @param otherFilters - filters to apply on the widget * @param attributeFilterConfigs - filter configs * @returns promise with the filters with the ignored filters removed */ getResolvedFiltersForWidgetWithMultipleDateFilters(widget: IWidget, commonDateFilters: IDateFilter[], otherFilters: IFilter[], attributeFilterConfigs: IDashboardAttributeFilterConfig[]): Promise; /** * Gets all dashboard plugins registered in the current workspace. * * @param options - options that specify how the plugin should be loaded */ getDashboardPlugins(options?: IGetDashboardPluginOptions): Promise; /** * Load dashboard plugin by it's reference. * * @param ref - plugin reference * @param options - options that specify how the plugin should be loaded */ getDashboardPlugin(ref: ObjRef, options?: IGetDashboardPluginOptions): Promise; /** * Creates a record about a dashboard plugin. Creating a new dashboard plugin does not impact any * existing dashboards in the workspace. * * In order to use a plugin on a dashboard, you need to create a link between the dashboard and the * plugin. Multiple dashboards may link to a single plugin; each dashboard may link to the plugin with * different plugin-specific parameters. * * @remarks * Analytical Backend only allows creating new dashboard plugins or deleting existing plugins. The goal * behind this decision is to encourage safe, phased rollout of new plugin versions. You must first * create a new dashboard plugin and then explicitly start using this new version on dashboards in * order for changes to take effect. * * @param plugin - definition of plugin to create */ createDashboardPlugin(plugin: IDashboardPluginDefinition): Promise; /** * Deletes a record about a dashboard plugin from the backend. * * @remarks * - some backend implementations may reject to delete a dashboard plugin that is used on existing dashboards * * @param ref - reference to plugin to */ deleteDashboardPlugin(ref: ObjRef): Promise; /** * Get current user's permissions to the dashboard. * * @param ref - dashboard reference */ getDashboardPermissions(ref: ObjRef): Promise; /** * Checks whether dashboards exist for current user. Returns sanitized array of existing dashboards according to user's * permissions to access or drill to them. * * @param dashboardRefs - dashboard references to validate */ validateDashboardsExistence(dashboardRefs: ObjRef[]): Promise; /** * Get a list of filter views for the current user. * * @param dashboardRef - ref of the dashboard for which we want to get the filter views. */ getFilterViewsForCurrentUser(dashboardRef: ObjRef): Promise; /** * Create a new filter view. * * @param filterView - filter view that must be created. */ createFilterView(filterView: IDashboardFilterViewSaveRequest): Promise; /** * Delete a filter view identified by the provided ref. * * @param ref - ref of the filter view that must be deleted. */ deleteFilterView(ref: ObjRef): Promise; /** * Set a filter view identified by the provided ref as the default one. * The other filter views for the same dashboard that are marked as default ones will be unmarked. * * @param ref - ref of the filter view that must be set as default. * @param isDefault - determine if filter view identified by the provided ref should be marked as a default * one. If yes, any existing filter view for the same user and dashboard will be marked as non default * as only one can be set as default at the same time. */ setFilterViewAsDefault(ref: ObjRef, isDefault: boolean): Promise; /** * Starts the process of generating AI summary for the dashboard. * @param dashboardId - id of the dashboard for which summary should be generated */ startDashboardSummaryWorkflow?(dashboardId: string): Promise; /** * Gets the status of the dashboard summary workflow. * Used for polling the status of the workflow run. * @param runId - id of the workflow run */ getDashboardSummaryWorkflowStatus?(runId: string): Promise; } /** * Service for querying workspace datasets * * @public */ export declare interface IWorkspaceDatasetsService { /** * Receive all workspace csv datasets * * @returns promise of workspace csv datasets */ getDatasets(): Promise; /** * Receive all workspace datasets metadata * * @returns promise of workspace datasets metadata */ getAllDatasetsMeta(): Promise; /** * Get all dataSets for given refs * * @returns promise array of workspace dataSets metadata objects */ getDataSets(refs: ObjRef[]): Promise; /** * Get dataset by reference. * * @param ref - ref of the dataset * @returns promise of dataset metadata object * @beta */ getDataset(ref: ObjRef): Promise; /** * Updates metadata object for the dataset. * * @param dataSet - dataset metadata object to update * @returns promise of updated dataset metadata object * @beta */ updateDatasetMeta(dataSet: Partial & IMetadataObjectIdentity): Promise; /** * Datasets query factory. * * @returns datasets query * @beta */ getDatasetsQuery(): IDatasetsQuery; } /** * Workspace descriptor contains details about the analytical workspace. * * @public */ export declare interface IWorkspaceDescriptor { id: string; title: string; description: string; isDemo?: boolean; /** * Prefix used by current workspace */ prefix?: string; /** * Identifier of the parent workspace */ parentWorkspace?: string; /** * Prefixes of parent workspaces */ parentPrefixes?: string[]; /** * Early access attribute value of the workspace * @deprecated - use earlyAccessValues instead */ earlyAccess?: string; /** * Early access flags of the workspace */ earlyAccessValues?: string[]; /** * Number of child workspaces */ childWorkspacesCount?: number; } /** * Workspace descriptor properties to update. * Optional properties can be set to null to delete the value. * * @see IWorkspaceDescriptor * @public */ export declare interface IWorkspaceDescriptorUpdate { title?: string; description?: string; prefix?: string | null; earlyAccess?: string | null; earlyAccessValues?: string[] | null; } /** * Service to query, update or delete exportDefinitions, and other methods related to exportDefinitions. * Check IExportDefinitionMetadataObject for more details. * * @deprecated Not supported for write anymore * @alpha */ export declare interface IWorkspaceExportDefinitionsService { /** * Request exportDefinition for the given reference * * @param ref - exportDefinition reference * @param options - specify additional options * @returns promise of exportDefinition */ getExportDefinition(ref: ObjRef, options?: IGetExportDefinitionOptions): Promise; /** * Queries workspace exportDefinitions, using various criteria and paging settings. * * @param options - query options; if not specified defaults to no sorting, no filtering and 50 items per page * @returns paged results, empty page with zero total count if there are no exportDefinitions stored in the workspace */ getExportDefinitions(options?: IExportDefinitionsQueryOptions): Promise; /** * List exportDefinitions * * @returns methods for querying exportDefinitions */ getExportDefinitionsQuery(): IExportDefinitionsQuery; /** * Create and save exportDefinition for the provided exportDefinition * * @param exportDefinition - exportDefinition to create * @returns promise of created exportDefinition */ createExportDefinition(exportDefinition: IExportDefinitionMetadataObjectDefinition): Promise; /** * Update provided exportDefinition * * @param ref - ref of the exportDefinition to update * @param exportDefinition - exportDefinition to update * @returns promise of updated exportDefinition */ updateExportDefinition(ref: ObjRef, exportDefinition: IExportDefinitionMetadataObjectDefinition): Promise; /** * Delete exportDefinition with the given reference * * @param ref - ref of the exportDefinition to delete * @returns promise of undefined */ deleteExportDefinition(ref: ObjRef): Promise; } /** * Service for managing workspace-level export templates. * * @beta */ export declare interface IWorkspaceExportTemplatesService { /** * Get the list of available export templates for slide exports. * * @returns promise with array of export templates available in the workspace */ getExportTemplates(): Promise; /** * Get a single export template by its reference. * * @param ref - reference to the export template * @returns promise with the export template */ getExportTemplate(ref: ObjRef): Promise; /** * Create a new export template. * * @param template - definition of the export template to create * @returns promise with the created export template */ createExportTemplate(template: IExportTemplateDefinition): Promise; /** * Partially update an existing export template. Only the provided properties are changed. * * @param ref - reference to the export template to update * @param template - subset of the export template properties to change * @returns promise with the updated export template */ patchExportTemplate(ref: ObjRef, template: Partial): Promise; /** * Delete an existing export template. * * @param ref - reference to the export template to delete * @returns promise */ deleteExportTemplate(ref: ObjRef): Promise; } /** * Service for querying additional facts data. * If you want to query facts themselves, use catalog {@link IWorkspaceCatalogFactory} * * @public */ export declare interface IWorkspaceFactsService { /** * Get information about the given fact's dataset * @param ref - ref of the fact * @returns promise of metadata object */ getFactDatasetMeta(ref: ObjRef): Promise; /** * Facts query factory. * * @returns facts query */ getFactsQuery(): IFactsQuery; /** * Get information about the given fact * @param ref - ref of the fact * @param opts - options to include additional data * @returns promise of metadata object */ getFact(ref: ObjRef, opts?: { include?: ["dataset"]; }): Promise; /** * Updates metadata of the fact. * * @param updatedFact - update to apply */ updateFactMeta(updatedFact: Partial & IMetadataObjectIdentity): Promise; } /** * Service to query, update or delete insights, and other methods related to insights. * Check IInsight for more details. * * @public */ export declare interface IWorkspaceInsightsService { /** * Request visualization class for the given reference * * @param ref - visualization class reference * @returns promise of visualization class */ getVisualizationClass(ref: ObjRef): Promise; /** * Request all visualization classes * * @param options - specify additional options * @returns promise of visualization classes */ getVisualizationClasses(options?: IGetVisualizationClassesOptions): Promise; /** * Request insight for the given reference together with related catalog items * * @param ref - insight reference * @returns promise of catalog item of type metric or fact */ getInsightWithCatalogItems(ref: ObjRef): Promise<{ insight: IInsight; catalogItems: Array; }>; /** * Request insight for the given reference * * @param ref - insight reference * @param options - specify additional options * @returns promise of insight */ getInsight(ref: ObjRef, options?: IGetInsightOptions): Promise; /** * Queries workspace insights, using various criteria and paging settings. * * @param options - query options; if not specified defaults to no sorting, no filtering and 50 items per page * @returns paged results, empty page with zero total count if there are no insights stored in the workspace */ getInsights(options?: IInsightsQueryOptions): Promise; /** * List insights * * @returns methods for querying insights */ getInsightsQuery(): IInsightsQuery; /** * Create and save insight for the provided insight definition * * @param insight - insight definition * @returns promise of created insight */ createInsight(insight: IInsightDefinition): Promise; /** * Update provided insight * * @param insight - insight to update * @returns promise of updated insight */ updateInsight(insight: IInsight): Promise; /** * Update metadata object for the insight * * @param insight - metadata object to update * @returns promise of updated measure */ updateInsightMeta(insight: Partial & IMetadataObjectIdentity): Promise; /** * Sets insight certification metadata. * * @param ref - insight reference * @param certification - certification state; undefined clears certification */ setCertification(ref: ObjRef, certification?: IObjectCertificationWrite): Promise; /** * Delete insight with the given reference * * @param ref - ref of the insight to delete * @returns promise of undefined */ deleteInsight(ref: ObjRef): Promise; /** * Get all metadata objects referenced by a given insight. * * @param insight - insight to get referenced objects for * @param types - optional array of object types to include, when not specified, all supported references will * be retrieved */ getInsightReferencedObjects(insight: IInsight, types?: SupportedInsightReferenceTypes[]): Promise; /** * Get all metadata objects which uses specified object(ie. object is used by these objects) by a given reference. * * @param ref - ref of the insight to get referencing objects for */ getInsightReferencingObjects(ref: ObjRef): Promise; /** * Get insight with the filters provided merged with the filters specified by the insight itself. * * @param insight - insight to start with * @param filters - filters to merge * @returns promise of new insight with the filters merged in */ getInsightWithAddedFilters(insight: T, filters: IFilter[]): Promise; } /** * Service for key drivers analysis * * @internal */ export declare interface IWorkspaceKeyDriverAnalysisService { /** * Compute change analysis */ computeChangeAnalysis(definition: IChangeAnalysisDefinition, period: IChangeAnalysisPeriod, options?: IChangeAnalysisOptions, signal?: AbortSignal): Promise; /** * Cancel change analysis */ cancelChangeAnalysis(): Promise; } /** * Service for querying information about logical data model. * * This is internal service that returns data for internal UI application. It will be refactored once more * methods are added. This method would live in TigerSpecificFunctions, as the interface is experimental, * but Meditor has an issue with injecting both analytical backend and tiger specific functions objects. * * @internal */ export declare interface IWorkspaceLogicalModelService { /** * Returns information about date datasets in the workspace. * @param includeParents - true if parents should be included/ */ getDatasets(includeParents: boolean): Promise; } /** * Service for create, update or delete measures and querying additional measures data. * If you want to query measures themselves, use catalog {@link IWorkspaceCatalogFactory} * * @public */ export declare interface IWorkspaceMeasuresService { /** * Compute key drivers for a given measure. * * @param metric - the measure to compute key drivers for * @param sortDirection - the direction to sort the key drivers by * @returns promise of the key drivers * @alpha */ computeKeyDrivers: (measure: IMeasure, options?: { sortDirection: "ASC" | "DESC"; }) => Promise; /** * Get measure expression tokens for provided measure identifier * @param ref - ref of the measure * @returns promise of measure expression tokens */ getMeasureExpressionTokens(ref: ObjRef): Promise; /** * Create and save measure for the provided measure definition * * @param measure - measure definition * @returns promise of created measure */ createMeasure(measure: IMeasureMetadataObjectDefinition): Promise; /** * Update provided measure * * @param measure - measure to update * @returns promise of updated measure */ updateMeasure(measure: IMeasureMetadataObject): Promise; /** * Update metadata object for the measure * * @param measure - metadata object to update * @returns promise of updated measure */ updateMeasureMeta(measure: Partial & IMetadataObjectIdentity): Promise; /** * Sets measure certification metadata. * * @param ref - measure reference * @param certification - certification state; undefined clears certification */ setCertification(ref: ObjRef, certification?: IObjectCertificationWrite): Promise; /** * Delete measure with the given reference * * @param measureRef - ref of the measure to delete * @returns promise of undefined */ deleteMeasure(measureRef: ObjRef): Promise; /** * Get all metadata objects which uses specified object (ie. object is used by these objects) by a given reference. * * @param measureRef - ref of the measure to check * @returns promise of references */ getMeasureReferencingObjects(measureRef: ObjRef): Promise; /** * Measures query factory. * * @returns measures query */ getMeasuresQuery(): IMeasuresQuery; /** * Get measure by reference * * @param ref - ref of the measure to get * @param options - options for getting the measure * @returns promise of measure */ getMeasure(ref: ObjRef, options?: IGetMeasureOptions): Promise; /** * Get connected attributes for a measure * * @param definition - definition of measure * @param auxMeasures - optional aux measures */ getConnectedAttributes(definition: IMeasure, auxMeasures?: IMeasure[]): Promise; } /** * Reads and updates who has access to a single catalog object. The grantee * types are shared with the dashboard share service so the same UI primitives * work for both flows. * * @alpha */ export declare interface IWorkspaceObjectPermissionsService { /** * Returns the current list of grants for the given object. * * @param target - the object whose access to read */ getAccessList(target: IObjectPermissionsObject): Promise; /** * Applies the given grants. Grantees not included in `grantees` are left * unchanged; a grantee with an empty `permissions` array is removed. * * @param target - the object whose access to change * @param grantees - grants to apply */ manageObjectPermissions(target: IObjectPermissionsObject, grantees: IGranularAccessGrantee[]): Promise; /** * Returns the users and groups in the workspace that can be granted access. * Excludes the current user. Whether organization admins are excluded * depends on the backend. * * @param target - the object to find available assignees for */ getAvailableAssignees(target: IObjectPermissionsObject): Promise; } /** * Service for querying additional parameter data. * * @public */ export declare interface IWorkspaceParametersService { /** * Create and save parameter for the provided parameter definition. * * @param parameter - parameter definition * @returns promise of created parameter */ createParameter(parameter: IParameterMetadataObjectDefinition): Promise; /** * Parameters query factory. * * @returns parameters query */ getParametersQuery(): IParametersQuery; /** * Get parameter by reference. * * @param ref - ref of the parameter to get * @returns promise of parameter */ getParameter(ref: ObjRef): Promise; /** * Applies a partial update to a parameter, including definition fields when provided. * * @param updatedParameter - update to apply */ updateParameter(updatedParameter: Partial & IMetadataObjectIdentity): Promise; /** * Delete parameter by reference. * * @param ref - ref of the parameter to delete */ deleteParameter(ref: ObjRef): Promise; } /** * Service to query workspace permissions * * @public */ export declare interface IWorkspacePermissionsService { /** * Request workspace permissions for the currently authenticated user * * @returns promise of user workspace permissions */ getPermissionsForCurrentUser(): Promise; } export { IWorkspaceSettings } /** * This service provides access to settings for a particular workspace. * * @public */ export declare interface IWorkspaceSettingsService { /** * Sets alert default * * @param value - describes parameters for alerting. * * @returns promise */ setAlertDefault(value: IAlertDefault): Promise; /** * Returns effective workspace settings with all inherited values resolved. * * @remarks * The returned settings include values inherited from organization and system defaults, * not just those directly set at the workspace level. User-specific overrides are excluded. * * @returns promise of resolved workspace settings */ getSettings(): Promise; /** * Asynchronously queries feature flags taking into account settings from both the workspace and the current user. * * @returns promise of user/workspace settings */ getSettingsForCurrentUser(): Promise; /** * Sets locale for current workspace. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setLocale(locale: string): Promise; /** * Sets metadata locale for current workspace. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setMetadataLocale(locale: string): Promise; /** * Sets format locale for current workspace. * * @param locale - IETF BCP 47 Code locale ID, for example "en-US", "cs-CZ", etc. * * @returns promise */ setFormatLocale(locale: string): Promise; /** * Set separators for the current workspace * * @param separators - separators for the current workspace * * @returns promise */ setSeparators(separators: ISeparators): Promise; /** * Set active LLM endpoint for the organization. * * @param endpoint - id of the LLM endpoint to set as active for the organization. * * @returns promise */ setActiveLlmEndpoint(endpoint: string): Promise; /** * Set active LLM provider for the organization. * * @param provider - id of the LLM provider to set as active for the organization. * @param defaultModelId - id of the default model to set as active for the organization. * * @returns promise * */ setActiveLlmProvider(provider: string, defaultModelId: string): Promise; /** * Sets timezone for current workspace. * * @param timezone - the value based on IANA time zone database naming convention. * for example: "America/Los_Angeles", etc. * * @returns promise */ setTimezone(timezone: string): Promise; /** * Sets whether end users may change the timezone in Analytical Designer and, by default, on dashboards. * * @param enabled - whether end users may change the timezone * * @returns promise * @alpha */ setEnableTimezoneChange(enabled: boolean): Promise; /** * Sets date format for current workspace. * * @param dateFormat - the format based on the ICU standard, for example: "en-US", "cs-CZ", etc. * * @returns promise */ setDateFormat(dateFormat: string): Promise; /** * Sets first day of week for current workspace. * * @param weekStart - "Sunday | "Monday" * * @returns promise */ setWeekStart(weekStart: string): Promise; /** * Sets fiscal calendar for current workspace. * * @param fiscalYear - fiscal year configuration including month offset and optional prefixes. * * @returns promise */ setFiscalCalendar(fiscalYear: IFiscalYear): Promise; /** * Sets active calendars configuration for current workspace. * * @param calendars - configuration for which calendars are enabled and which is the default. * * @returns promise */ setActiveCalendars(calendars: IActiveCalendars): Promise; /** * Sets DashboardFiltersApplyMode configuration for workspace. Default is taken from organization setting. * * @param dashboardFiltersApplyMode - describes new mode for applying dashboard filters. * * @returns promise * @alpha */ setDashboardFiltersApplyMode(dashboardFiltersApplyMode: DashboardFiltersApplyMode): Promise; /** * Clears DashboardFiltersApplyMode configuration for workspace * so default value from organization is used. * * @returns promise * @alpha */ deleteDashboardFiltersApplyMode(): Promise; /** * Sets the default export template applied to slide exports in this workspace when none is explicitly * requested. Default is taken from organization setting. * * @param value - identifier and scope of the export template to use as the default. * * @returns promise * @beta */ setDefaultExportTemplate(value: IDefaultExportTemplate): Promise; /** * Clears the default export template configuration for workspace so the value inherited from the * organization (or the built-in default) is used. * * @returns promise * @beta */ deleteDefaultExportTemplate(): Promise; /** * Sets enable AI on data setting for current workspace. * * @param enabled - whether to enable sending aggregated data to LLM. * * @returns promise * @alpha */ setEnableAiOnData(enabled: boolean): Promise; /** * Sets AI rate limit override for the current workspace. * * @param value - max interactions and rolling time window for AI chat. * * @returns promise * @alpha */ setAiRateLimit(value: IAiRateLimit): Promise; /** * Deletes AI rate limit override for the current workspace, reverting to the organization/platform default. * * @returns promise * @alpha */ deleteAiRateLimit(): Promise; /** * Returns the AI rate limit value owned by the workspace (without resolving inherited defaults). * Returns `undefined` when the workspace has no override. * * @returns promise * @alpha */ getAiRateLimit(): Promise; /** * Gets enable drill to URL by default setting value for workspace. * * @remarks * Returns the workspace-owned value only, not the resolved/inherited value. * Returns `undefined` if no workspace override exists (inherits from organization). * * @returns promise of workspace-owned setting value, or undefined if not set * @alpha */ getEnableDrillToUrlByDefault(): Promise; /** * Gets CSV delimiter setting value for workspace. * * @remarks * Returns the workspace-owned value only, not the resolved/inherited value. * Returns `undefined` if no workspace override exists (inherits from organization). * * @returns promise of workspace-owned setting value, or undefined if not set * @alpha */ getExportCsvCustomDelimiter(): Promise; /** * Sets enable drill to URL by default setting for workspace. Default is taken from organization setting. * * @param enabled - whether to enable drill to URL by default for dashboard widgets. * * @returns promise * @alpha */ setEnableDrillToUrlByDefault(enabled: boolean): Promise; /** * Sets enable partial data results setting for workspace. Default is taken from organization setting. * * @remarks * When enabled, executions that reach a row/column/cell limit return partial data (with limit-break * metadata) instead of failing. * * @param enabled - whether to allow partial data results for executions in this workspace. * * @returns promise * @alpha */ setEnablePartialDataResults(enabled: boolean): Promise; /** * Sets enable null joins setting for workspace. Default is taken from organization setting. * * @remarks * When enabled, generated SQL joins coalesce null values before comparing join keys. * * @param enabled - whether to enable null value matching in SQL joins for this workspace. * * @returns promise * @alpha */ setEnableNullJoins(enabled: boolean): Promise; /** * Sets enable query tags setting for workspace. Default is taken from organization setting. * * @param enabled - whether to enable query tags for this workspace. * * @returns promise * @alpha */ setEnableQueryTags(enabled: boolean): Promise; /** * Sets default CSV delimiter for exports in workspace. Default is taken from organization setting. * * @param delimiter - single character delimiter to use for CSV exports. * * @returns promise * @alpha */ setExportCsvCustomDelimiter(delimiter: string): Promise; /** * Clears enable drill to URL by default configuration for workspace * so default value from organization is used. * * @returns promise * @alpha */ deleteEnableDrillToUrlByDefault(): Promise; /** * Clears workspace CSV delimiter configuration so default value from organization is used. * * @returns promise * @alpha */ deleteExportCsvCustomDelimiter(): Promise; /** * Sets color palette for current workspace. * * @param colorPaletteId - ID of the color palette to apply to charts in workspace. * * @returns promise */ setColorPalette(colorPaletteId: string): Promise; /** * Sets theme for current workspace. * * @param themeId - ID of the theme to apply to the current workspace. * * @returns promise */ setTheme(themeId: string): Promise; /** * Deletes theme from workspace settings returning workspace styling to default. * * @returns promise */ deleteTheme(): Promise; /** * Deletes color palette from workspace settings returning chart colors to default. * * @returns promise */ deleteColorPalette(): Promise; /** * Sets metric format override for the current workspace. * * @param override - mapping of metric types to custom format strings. * * @returns promise */ setMetricFormatOverride(override: IMetricFormatOverrideSetting): Promise; /** * Deletes metric format override from workspace settings, * returning to inherited organization-level format. * * @returns promise */ deleteMetricFormatOverride(): Promise; } /** * Query to retrieve available workspaces. * * @public */ export declare interface IWorkspacesQuery { /** * Sets a limit on how many items to retrieve at once. * @param limit - how many items to retrieve at most * * @public */ withLimit(limit: number): IWorkspacesQuery; /** * Sets a number of items to skip. * @param offset - how many items to skip */ withOffset(offset: number): IWorkspacesQuery; /** * Sets a identifier of the parent workspace to get its children, otherwise the root workspace. * @param workspaceId - identifier of the parent workspace */ withParent(workspaceId: string | undefined): IWorkspacesQuery; /** * Sets filter of workspaces by given attributes * @param filter - an object of attributes and values to filter by * @alpha */ withFilter(filter: IWorkspacesQueryFilter): IWorkspacesQuery; /** * Sets additional options for the query. * @param options - an object of options to modify the query behavior * @alpha */ withOptions(options: IWorkspacesQueryOptions): IWorkspacesQuery; /** * Sets a text to search. * @param search - text to search */ withSearch(search: string): IWorkspacesQuery; /** * Executes the query and returns the result asynchronously. */ query(): Promise; /** * Executes the query and returns workspace descriptors in a paged result. * This is more efficient when you only need workspace metadata (id, title, etc.) * and don't need the full workspace services. */ queryDescriptors(): Promise>; /** * Executes the query and returns all workspace descriptors. * This is more efficient when you only need workspace metadata (id, title, etc.) * and don't need the full workspace services. */ queryAllDescriptors(): Promise; } /** * Factory providing creating queries used to get available workspaces. * * @public */ export declare interface IWorkspacesQueryFactory { /** * Creates a query for workspaces available to the specified user. * * @param userId - id of the user to retrieve workspaces for * @public */ forUser(userId: string): IWorkspacesQuery; /** * Creates a query for workspaces available to the user currently logged in. * * @public */ forCurrentUser(): IWorkspacesQuery; } /** * Filter options for workspaces query. * * @public */ export declare interface IWorkspacesQueryFilter { /** * Filter by description of the workspace */ description?: string; /** * Filter by earlyAccess property on the workspace */ earlyAccess?: string; /** * Filter by entity identifiers prefix in the workspace */ prefix?: string; /** * When applied, only root workspaces without a parent workspace are queried */ rootWorkspacesOnly?: boolean; } /** * Additional options for workspaces query. * * @public */ export declare interface IWorkspacesQueryOptions { /** * Include count of child workspaces in the result */ includeChildWorkspacesCount?: boolean; } /** * Paged resource with results of a workspace query. * * @public */ export declare type IWorkspacesQueryResult = IPagedResource; /** * This service provides access to workspace styling settings such as color palette. * * @remarks * The contract here is that styling settings ARE applied in Analytical Designer and Dashboard applications and * so any SDK code that embeds entities created by those applications MUST also use the same styling settings in * order to maintain consistent user experience. * * @public */ export declare interface IWorkspaceStylingService { /** * Asynchronously returns items in the color palette. * * @returns promise of color palette */ getColorPalette(): Promise; /** * Asynchronously returns theme. * * @returns promise of theme */ getTheme(): Promise; /** * Request active theme setting from workspace. * * @returns promise of theme object reference */ getActiveTheme(): Promise; /** * Set active theme setting in workspace. * * @remarks * The scope is carried by the reference itself: an `idRef` typed `"workspaceTheme"` activates a * workspace-scoped theme, otherwise the theme is treated as organization-scoped. There is no * cross-scope fallback when the active setting is later resolved. * * @param themeRef - active theme reference * @returns promise */ setActiveTheme(themeRef: ObjRef): Promise; /** * Clear active theme setting from workspace. * * @returns promise */ clearActiveTheme(): Promise; /** * Request active color palette setting from workspace. * * @returns promise of color palette object reference */ getActiveColorPalette(): Promise; /** * Set active color palette setting in workspace. * * @remarks * The scope is carried by the reference itself: an `idRef` typed `"workspaceColorPalette"` activates a * workspace-scoped color palette, otherwise it is treated as organization-scoped. There is no * cross-scope fallback when the active setting is later resolved. * * @param colorPaletteRef - active color palette reference * @returns promise */ setActiveColorPalette(colorPaletteRef: ObjRef): Promise; /** * Clear active color palette setting from workspace. * * @returns promise */ clearActiveColorPalette(): Promise; /** * Request all themes defined on the workspace level. * * @returns promise of array of theme metadata objects */ getThemes(): Promise; /** * Create a new theme on the workspace level. * * @param theme - theme definition * @returns promise of the created theme metadata object */ createTheme(theme: IThemeDefinition): Promise; /** * Update an existing theme on the workspace level. * * @param theme - theme definition * @returns promise of the updated theme metadata object */ updateTheme(theme: IThemeDefinition): Promise; /** * Delete a theme on the workspace level. * * @param themeRef - theme reference * @returns promise */ deleteTheme(themeRef: ObjRef): Promise; /** * Request all color palettes defined on the workspace level. * * @returns promise of array of color palette metadata objects */ getColorPalettes(): Promise; /** * Create a new color palette on the workspace level. * * @param colorPalette - color palette definition * @returns promise of the created color palette metadata object */ createColorPalette(colorPalette: IColorPaletteDefinition): Promise; /** * Update an existing color palette on the workspace level. * * @param colorPalette - color palette definition * @returns promise of the updated color palette metadata object */ updateColorPalette(colorPalette: IColorPaletteDefinition): Promise; /** * Delete a color palette on the workspace level. * * @param colorPaletteRef - color palette reference * @returns promise */ deleteColorPalette(colorPaletteRef: ObjRef): Promise; } /** * Service to query user groups for current workspace * * @alpha */ export declare interface IWorkspaceUserGroupsQuery { /** * Starts the user groups query. * * @returns promise with a list of all user groups matching the specified options */ query(options: IWorkspaceUserGroupsQueryOptions): Promise; } /** * Configuration options for querying user groups * * @alpha */ export declare interface IWorkspaceUserGroupsQueryOptions { /** * String prefix filter */ search?: string; /** * Specify (zero-based) starting offset for the results. */ offset?: number; /** * Specify number of items per page. */ limit?: number; } /** * Paged result of user groups query. Last page of data returns empty items. * * @alpha */ export declare type IWorkspaceUserGroupsQueryResult = IPagedResource; /** * Service to query users for current workspace * * @public */ export declare interface IWorkspaceUsersQuery { /** * Allows to specify advanced options for the users query. * * @param options - advanced options * @returns users query */ withOptions(options: IWorkspaceUsersQueryOptions): IWorkspaceUsersQuery; /** * Starts the users query. * * @returns promise with a list of all users matching the specified options */ queryAll(): Promise; /** * Starts the users query. * * @returns promise of first page of the results */ query(): Promise; } /** * Configuration options for querying users * * @public */ export declare interface IWorkspaceUsersQueryOptions { /** * Structured prefix filter * - disjunctions are separated by colon (',') * - conjunctions are separated by space (' ') * - basic form match, if it matches as prefix to any of firstName, lastName and email */ search?: string; /** * Specify (zero-based) starting offset for the paged results. */ offset?: number; /** * Specify number of items per page. * * @remarks * Default value is 1000 */ limit?: number; } /** * Paged result of users query. Last page of data returns empty items. * * @public */ export declare type IWorkspaceUsersQueryResult = IPagedResource; /** * Represents nested path in layout * It's useful to track the layout location of the widget * Example: ["sections", 0, "items", 2, "widget"] points to the third item widget in first section * @alpha */ export declare type LayoutPath = Array; /** * @alpha */ export declare function layoutWidgets(layout: IDashboardLayout): Array; /** * Get all dashboard widgets * (layout does not only specify rendering, but also all used widgets) * * @alpha * @param layout - dashboard layout * @param collectedWidgets - bag for collecting widgets recursively from the layout * @returns - widgets with layout paths */ export declare function layoutWidgetsWithPaths(layout: IDashboardLayout): IWidgetWithLayoutPath[]; /** * This exception is thrown when the limit of objects that can be created on backend is reached, for example * if no more workspaces can be created because of the plan limits. * * @public */ export declare class LimitReached extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * This exception MUST be thrown when the backend execution identifies that there is no data to * calculate. * * @public */ export declare class NoDataError extends AnalyticalBackendError { /** * Empty data view MAY be included by the backend in case execution metadata and data view metadata is present. */ readonly dataView?: IDataView; constructor(message: string, dataView?: IDataView, cause?: Error); } /** * This exception is thrown when client code triggers an operation which requires authentication but the client * code did not provide credentials or the credentials are invalid. * * @public */ export declare class NotAuthenticated extends AnalyticalBackendError { authenticationFlow?: AuthenticationFlow; /** * More detailed reason of the NotAuthenticated error. See {@link NotAuthenticatedReason} for more information. * * @remarks * MAY be undefined if the particular backend implementation does not provide this value. */ reason?: NotAuthenticatedReason; constructor(message: string, cause?: Error, reason?: NotAuthenticatedReason); } /** * Type of the function to be called when the Analytical Backend raises a {@link NotAuthenticated} error. * See {@link IAuthenticationProvider.onNotAuthenticated} for more details. * * @public */ export declare type NotAuthenticatedHandler = (context: IAuthenticationContext, error: NotAuthenticated) => void; /** * More detailed reason of the NotAuthenticated error. * * @remarks * - invalid_credentials - the provided credentials were invalid * - credentials_expired - the credentials' validity expired * * @public */ export declare type NotAuthenticatedReason = "invalid_credentials" | "credentials_expired"; /** * This exception is thrown when client code asks Analytical Backend to exercise a feature that is not * implemented yet. * @public */ export declare class NotImplemented extends AnalyticalBackendError { constructor(message: string); } /** * This exception is thrown when client code asks Analytical Backend to exercise an unsupported feature. * * @public */ export declare class NotSupported extends AnalyticalBackendError { constructor(message: string); } /** * This exception is thrown when a permission change is refused because it would grant a * level the caller does not hold themselves. The backend is the authority on what may be * granted, so a client can offer the change and report this refusal instead of predicting it. * * @alpha */ export declare class PermissionEscalationRefused extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * Prepares execution of the provided definition against a backend. * * @remarks * This is a convenience function which uses the backend methods to create and prepare an execution. * * @param definition - execution definition to prepare execution for * @param backend - backend to use * @returns new prepared execution * @public */ export declare function prepareExecution(backend: IAnalyticalBackend, definition: IExecutionDefinition, options?: IPreparedExecutionOptions): IPreparedExecution; /** * This exception MUST be thrown when backend execution identifies that the data to calculate * results for is protected and the caller lacks the sufficient authorization. * * @public */ export declare class ProtectedDataError extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * Indicates which backend endpoint flavor the query should use. * * Some catalog-style APIs expose both a straightforward `GET` endpoint and an enriched search-specific * `POST` endpoint (typically `/search`) that adds advanced filtering or sorting semantics. * * @beta */ export declare type QueryMethod = "GET" | "POST"; /** * @alpha */ export declare type SupportedDashboardReferenceTypes = "insight" | "dashboardPlugin" | "dataSet"; /** * List of currently supported types of references that can be retrieved using the {@link IWorkspaceInsightsService.getInsightReferencedObjects} function. * @public */ export declare type SupportedInsightReferenceTypes = Exclude; /** * List of currently supported types of references that can be retrieved using getWidgetReferencedObjects() * @alpha */ export declare type SupportedWidgetReferenceTypes = Exclude; /** * This error means that during a repeated polling for some resource, we did not * reach 200 response within the certain number of attempts/time. * * @public */ export declare class TimeoutError extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * This exception MUST be thrown when the unexpected happens. This is a last-resort error type that SHOULD * be used if the erroneous state cannot be categorized in a better way. * * @public */ export declare class UnexpectedError extends AnalyticalBackendError { constructor(message: string, cause?: Error); } /** * This exception MUST be thrown when communication with the backend encounters an unexpected * response status code and it cannot handle or categorize it to a known, domain-specific error. * * @public */ export declare class UnexpectedResponseError extends AnalyticalBackendError { readonly httpStatus: number; readonly responseBody: unknown; readonly traceId: string | undefined; constructor(message: string, httpStatus: number, responseBody: unknown, traceId?: string, cause?: Error); } /** * The type of context in which is tested URL valid. * * @public */ export declare type ValidationContext = "CORS" | "UI_EVENT" | "DRILL_TO_URI"; /** * Walk dashboard layout * This is useful to collect widgets from the layout or perform transforms on the layout * * @alpha * @param layout - dashboard layout * @param callbacks - walk callbacks * @returns void */ export declare function walkLayout(layout: IDashboardLayout, { sectionCallback, itemCallback, widgetCallback }: { sectionCallback?: (section: IDashboardLayoutSection, sectionPath: LayoutPath) => void; itemCallback?: (item: IDashboardLayoutItem, widgetPath: LayoutPath) => void; widgetCallback?: (widget: TWidget, widgetPath: LayoutPath) => void; }, path?: LayoutPath): void; export { }