@cube-dev/platform-client 0.18.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/schema.d.ts CHANGED
@@ -324,6 +324,58 @@ export interface paths {
324
324
  patch?: never;
325
325
  trace?: never;
326
326
  };
327
+ "/api/v1/deployments/{deploymentId}/chat-history/threads": {
328
+ parameters: {
329
+ query?: never;
330
+ header?: never;
331
+ path?: never;
332
+ cookie?: never;
333
+ };
334
+ /**
335
+ * List chat threads
336
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
337
+ *
338
+ * Every user's AI chat threads in the deployment, most recently updated first, for analyzing how people use the agent. Filters combine with AND; a filter given several values matches any of them.
339
+ *
340
+ * Set `includeTurns=true` to get each thread's turns in the same response. A turn is one prompt and everything the agent did to answer it: the final answer, the tools it called, and each query it ran with its SQL, status, row count and any thumbs-up/down feedback. Query result rows are never included. A prompt, answer or SQL longer than 20,000 characters, or an error longer than 2,000, is cut and ends in `…`. A page holds up to 200 threads, or 50 with turns; a larger `first` is lowered to that.
341
+ *
342
+ * For an incremental export, keep the newest `updatedAt` you have seen and pass it as `updatedAfter` next time.
343
+ *
344
+ * Chat history export is in preview: when it is not enabled for the account, `404` is returned.
345
+ */
346
+ get: operations["ChatHistoryPublicController.listChatHistoryThreads"];
347
+ put?: never;
348
+ post?: never;
349
+ delete?: never;
350
+ options?: never;
351
+ head?: never;
352
+ patch?: never;
353
+ trace?: never;
354
+ };
355
+ "/api/v1/deployments/{deploymentId}/chat-history/threads/{chatId}": {
356
+ parameters: {
357
+ query?: never;
358
+ header?: never;
359
+ path?: never;
360
+ cookie?: never;
361
+ };
362
+ /**
363
+ * Get a chat thread
364
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
365
+ *
366
+ * One chat thread with all of its turns, oldest first. A turn is one prompt and everything the agent did to answer it: the final answer, the tools it called, and each query it ran with its SQL, status, row count and any thumbs-up/down feedback. Query result rows are never included. A prompt, answer or SQL longer than 20,000 characters, or an error longer than 2,000, is cut and ends in `…`.
367
+ *
368
+ * Chat history export is in preview: when it is not enabled for the account, `404` is returned.
369
+ */
370
+ get: operations["ChatHistoryPublicController.getChatHistoryThread"];
371
+ put?: never;
372
+ post?: never;
373
+ delete?: never;
374
+ options?: never;
375
+ head?: never;
376
+ patch?: never;
377
+ trace?: never;
378
+ };
327
379
  "/api/v1/deployments/{deploymentId}/creation-step/advance": {
328
380
  parameters: {
329
381
  query?: never;
@@ -375,6 +427,8 @@ export interface paths {
375
427
  *
376
428
  * Pass `filters`, `timeGrains` and `memberSwitchers` to render the board with specific control values, exactly as a scheduled notification does; omit them to render its saved defaults.
377
429
  *
430
+ * Pass `layout: print` with `format: pdf` for the paginated A4 document the dashboard's "Print version" menu item produces — one column, every table row, the filter state as a summary line — instead of the default `screenshot` of the board. `print` with `format: png` returns `400`.
431
+ *
378
432
  * By default the dashboard renders under the calling user's own security context, so the file shows what that user would see. Requires **manage** access to the dashboard's workbook — the same permission the console's own "Download as PNG / PDF" actions require, because a whole-dashboard render is a bulk data export.
379
433
  *
380
434
  * To export on someone else's behalf, pass `renderAs`: the queries behind the image then run under that user's security context instead of yours. **Requires the caller to be a tenant administrator.** Name a console user by `userId` or `email` (`type: USER`), or an embed user by `embedTenantName` + `externalId` (`type: EMBED_USER`). A deactivated console user is not a valid subject and returns `404`; an email is matched case-insensitively.
@@ -1046,6 +1100,84 @@ export interface paths {
1046
1100
  patch?: never;
1047
1101
  trace?: never;
1048
1102
  };
1103
+ "/api/v1/deployments/{deploymentId}/ossie-conversions": {
1104
+ parameters: {
1105
+ query?: never;
1106
+ header?: never;
1107
+ path?: never;
1108
+ cookie?: never;
1109
+ };
1110
+ get?: never;
1111
+ put?: never;
1112
+ /**
1113
+ * Start an Apache Ossie conversion
1114
+ * @description Converts between a Cube data model and an [Apache Ossie (Open Semantic Interchange)](https://github.com/apache/ossie) model, and returns polling URLs immediately. An export converts the YAML data model of the deployment's latest successful build, or uploaded YAML files, to one Ossie model; an import converts an uploaded Ossie model to Cube data model files. Neither changes the deployment. Only static YAML model files are converted; JavaScript models and Jinja-templated files are skipped. Uploads are limited to 512 files of at most 2 MiB each and 20 MiB in total. Requests and results are kept for at most one day. Requires `SchemaRead` or `SchemaUpdate` access. This is currently in preview — reach out to the Cube support team to activate it for your account.
1115
+ */
1116
+ post: operations["OssieConversionPublicController.startConversion"];
1117
+ delete?: never;
1118
+ options?: never;
1119
+ head?: never;
1120
+ patch?: never;
1121
+ trace?: never;
1122
+ };
1123
+ "/api/v1/deployments/{deploymentId}/ossie-conversions/{conversionId}": {
1124
+ parameters: {
1125
+ query?: never;
1126
+ header?: never;
1127
+ path?: never;
1128
+ cookie?: never;
1129
+ };
1130
+ /** Get an Apache Ossie conversion status */
1131
+ get: operations["OssieConversionPublicController.conversionStatus"];
1132
+ put?: never;
1133
+ post?: never;
1134
+ /** Cancel an Apache Ossie conversion */
1135
+ delete: operations["OssieConversionPublicController.cancelConversion"];
1136
+ options?: never;
1137
+ head?: never;
1138
+ patch?: never;
1139
+ trace?: never;
1140
+ };
1141
+ "/api/v1/deployments/{deploymentId}/ossie-conversions/{conversionId}/files": {
1142
+ parameters: {
1143
+ query?: never;
1144
+ header?: never;
1145
+ path?: never;
1146
+ cookie?: never;
1147
+ };
1148
+ /**
1149
+ * Get the files of an Apache Ossie conversion
1150
+ * @description Returns `ossie.yaml` for an export, or the generated Cube data model files for an import; empty when the conversion failed. Returns 409 while the conversion is still running or if it ended without a result.
1151
+ */
1152
+ get: operations["OssieConversionPublicController.conversionFiles"];
1153
+ put?: never;
1154
+ post?: never;
1155
+ delete?: never;
1156
+ options?: never;
1157
+ head?: never;
1158
+ patch?: never;
1159
+ trace?: never;
1160
+ };
1161
+ "/api/v1/deployments/{deploymentId}/ossie-conversions/{conversionId}/result": {
1162
+ parameters: {
1163
+ query?: never;
1164
+ header?: never;
1165
+ path?: never;
1166
+ cookie?: never;
1167
+ };
1168
+ /**
1169
+ * Get an Apache Ossie conversion result
1170
+ * @description Returns the outcome, counts, issues and converter versions of a completed conversion. Returns 409 while the conversion is still running or if it ended without a result. Read the converted files from `/files`.
1171
+ */
1172
+ get: operations["OssieConversionPublicController.conversionResult"];
1173
+ put?: never;
1174
+ post?: never;
1175
+ delete?: never;
1176
+ options?: never;
1177
+ head?: never;
1178
+ patch?: never;
1179
+ trace?: never;
1180
+ };
1049
1181
  "/api/v1/deployments/{deploymentId}/pods": {
1050
1182
  parameters: {
1051
1183
  query?: never;
@@ -1424,7 +1556,7 @@ export interface paths {
1424
1556
  };
1425
1557
  /**
1426
1558
  * List scheduled tasks
1427
- * @description Every scheduled task in the deployment, most recently updated first, with its next run time. Needs access to the deployment; embed sessions get `403`.
1559
+ * @description The scheduled tasks in the deployment the caller can see — their own and those shared with them, or every task for an admin — most recently updated first, with each next run time. Needs access to the deployment; embed sessions get `403`.
1428
1560
  */
1429
1561
  get: operations["ScheduledTasksPublicController.listScheduledTasks"];
1430
1562
  put?: never;
@@ -1446,7 +1578,10 @@ export interface paths {
1446
1578
  path?: never;
1447
1579
  cookie?: never;
1448
1580
  };
1449
- /** Get a scheduled task */
1581
+ /**
1582
+ * Get a scheduled task
1583
+ * @description A task is visible to its creator, to admins and to whoever it is shared with; anyone else gets `404`.
1584
+ */
1450
1585
  get: operations["ScheduledTasksPublicController.getScheduledTask"];
1451
1586
  /**
1452
1587
  * Update a scheduled task
@@ -1840,7 +1975,7 @@ export interface paths {
1840
1975
  *
1841
1976
  * Read `GET /workbooks/{workbookId}/dashboard/file` first and copy each `oldText` from its `content`, including whitespace. Without `replaceAll`, `oldText` must occur exactly once. Edits apply in order; if any one fails, nothing is saved. The result is validated like `PUT /workbooks/{workbookId}/dashboard`.
1842
1977
  *
1843
- * Returns the new `content` and `hash`. Pass `expectedHash` to get `409` instead of editing a draft that changed since you read it. Requires **manage** access to the workbook.
1978
+ * Returns the new `content` and `hash`. Pass `expectedHash` to get `409` instead of editing a draft that changed since you read it. Requires **edit** access to the workbook.
1844
1979
  */
1845
1980
  patch: operations["WorkbooksPublicController.replaceWorkbookDashboardFileText"];
1846
1981
  trace?: never;
@@ -3032,6 +3167,122 @@ export interface paths {
3032
3167
  patch?: never;
3033
3168
  trace?: never;
3034
3169
  };
3170
+ "/api/v1/roles/": {
3171
+ parameters: {
3172
+ query?: never;
3173
+ header?: never;
3174
+ path?: never;
3175
+ cookie?: never;
3176
+ };
3177
+ /**
3178
+ * List custom roles
3179
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3180
+ *
3181
+ * Lists the tenant's custom roles, newest first, cursor-paginated via `first`/`after`. Cube's built-in roles are not included — they are not tenant data.
3182
+ */
3183
+ get: operations["RolesPublicController.getRoles"];
3184
+ put?: never;
3185
+ /**
3186
+ * Create a custom role
3187
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3188
+ *
3189
+ * Creates a role and returns it with the `id` to assign it by. Role names are unique, so recreating one that already exists answers `409`.
3190
+ *
3191
+ * To scope the role to specific deployments, send a `Deployment` policy whose `resources` are the deployment ids as strings. A role usually also needs a `Global` policy naming the holder's license tier — `AIBIView`, `AIBIExplore` or `AIBIDevelop` — which is what the console calls the role's Base Role. Pick a tier that covers the deployment actions you grant: the console forces Developer (`AIBIDevelop`) for every deployment action except `DeploymentRead`, `DeploymentAgentRead`, `DownloadData` and `ChatHistoryRead`, so a lower tier here produces a role its role builder would not have let you save:
3192
+ *
3193
+ * ```json
3194
+ * {
3195
+ * "name": "team-analytics",
3196
+ * "policies": [
3197
+ * {
3198
+ * "resourceType": "Global",
3199
+ * "actions": ["AIBIDevelop"],
3200
+ * "resources": ["All"]
3201
+ * },
3202
+ * {
3203
+ * "resourceType": "Deployment",
3204
+ * "actions": ["DeploymentRead", "SchemaRead", "SqlRunnerRead"],
3205
+ * "resources": ["1734"]
3206
+ * }
3207
+ * ]
3208
+ * }
3209
+ * ```
3210
+ *
3211
+ * The tier is **not** required and is **not** derived from the deployment actions: a role sent without one is accepted and simply confers no tier, so a user holding only that role gets the deployment grants and still cannot use the product. That is deliberate — a user holds the union of their roles, so a role that only adds a deployment scope beside another role carrying the tier is valid — but it means nothing warns you. Omit the `Global` policy only when some other role supplies the tier. Note the console does require one on every role it writes, so a role created here without a tier shows an unset Base Role when opened in the role builder.
3212
+ *
3213
+ * Use `["All"]` as `resources` to cover every deployment, and `"All"` as the single action for full access to the deployments in scope. A policy is rejected when it grants no action, when it names no resource, or when a `Deployment` resource is not a deployment id — pass the numeric id returned by POST /build/api/v1/deployments, not a slug or a name. Ids are checked for shape, not existence, so an id whose deployment was since deleted is kept and simply grants nothing.
3214
+ */
3215
+ post: operations["RolesPublicController.createRole"];
3216
+ delete?: never;
3217
+ options?: never;
3218
+ head?: never;
3219
+ patch?: never;
3220
+ trace?: never;
3221
+ };
3222
+ "/api/v1/roles/{roleId}": {
3223
+ parameters: {
3224
+ query?: never;
3225
+ header?: never;
3226
+ path?: never;
3227
+ cookie?: never;
3228
+ };
3229
+ /**
3230
+ * Get a custom role
3231
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3232
+ *
3233
+ * Returns one custom role by id, with its policies.
3234
+ */
3235
+ get: operations["RolesPublicController.getRole"];
3236
+ /**
3237
+ * Update a custom role
3238
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3239
+ *
3240
+ * Updates the fields present in the body and leaves the rest alone. Sending `policies` replaces the role's policies outright, so read the role first if you mean to add one rather than start over. Renaming to a name another role already holds answers `409`. Built-in roles cannot be updated.
3241
+ */
3242
+ put: operations["RolesPublicController.updateRole"];
3243
+ post?: never;
3244
+ /**
3245
+ * Delete a custom role
3246
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3247
+ *
3248
+ * Deletes the role and every assignment of it, from users and from groups. Built-in roles cannot be deleted.
3249
+ */
3250
+ delete: operations["RolesPublicController.deleteRole"];
3251
+ options?: never;
3252
+ head?: never;
3253
+ patch?: never;
3254
+ trace?: never;
3255
+ };
3256
+ "/api/v1/roles/{roleId}/users/{userId}": {
3257
+ parameters: {
3258
+ query?: never;
3259
+ header?: never;
3260
+ path?: never;
3261
+ cookie?: never;
3262
+ };
3263
+ get?: never;
3264
+ /**
3265
+ * Assign a role to a user
3266
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3267
+ *
3268
+ * Gives the user everything the role grants. Idempotent — assigning a role the user already holds changes nothing. Returns `404` if either the user or the role is unknown.
3269
+ *
3270
+ * Unlike the other endpoints here, this one is not limited to your custom roles: it also accepts the id of a built-in role, and assigning one grants everything that role confers. **Cube's Admin role is the exception and cannot be granted this way** — it is not among the built-in roles this endpoint resolves, so its id returns `404`. No call to this endpoint can make a user an account-wide administrator.
3271
+ */
3272
+ put: operations["RolesPublicController.assignRoleToUser"];
3273
+ post?: never;
3274
+ /**
3275
+ * Remove a role from a user
3276
+ * @description **🔒 Admin only.** Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
3277
+ *
3278
+ * Takes the role away from the user. Idempotent — removing a role the user does not hold changes nothing. Returns `404` if the user is unknown.
3279
+ */
3280
+ delete: operations["RolesPublicController.removeRoleFromUser"];
3281
+ options?: never;
3282
+ head?: never;
3283
+ patch?: never;
3284
+ trace?: never;
3285
+ };
3035
3286
  "/api/v1/spec": {
3036
3287
  parameters: {
3037
3288
  query?: never;
@@ -3688,6 +3939,7 @@ export interface components {
3688
3939
  hasAgentAccess?: any | null;
3689
3940
  mcpToken?: string | null;
3690
3941
  resolvedTimezone?: string | null;
3942
+ scheduledTaskPolicies?: components["schemas"]["ChatThreadPolicy"][] | null;
3691
3943
  timezoneSettings?: components["schemas"]["TimezoneSettings"] | null;
3692
3944
  token: string;
3693
3945
  url: string;
@@ -3712,6 +3964,7 @@ export interface components {
3712
3964
  createdAt: string;
3713
3965
  dedicatedAiEngineerRegion?: string | null;
3714
3966
  deploymentId?: number | null;
3967
+ displayName?: string | null;
3715
3968
  embeddingLlm?: components["schemas"]["AgentLlm"] | null;
3716
3969
  embeddingUrl?: string | null;
3717
3970
  id: number;
@@ -3799,6 +4052,7 @@ export interface components {
3799
4052
  aiPaywalled: boolean;
3800
4053
  appTheme?: components["schemas"]["AppTheme"] | null;
3801
4054
  applyThemeGlobally: boolean;
4055
+ boardDashboardsEnabled: boolean;
3802
4056
  creatorMode?: components["schemas"]["CreatorMode"] | null;
3803
4057
  dashboardAppsEnabled: boolean;
3804
4058
  embedding?: components["schemas"]["EmbedSettings"] | null;
@@ -3952,8 +4206,95 @@ export interface components {
3952
4206
  };
3953
4207
  /** @enum {string} */
3954
4208
  BulkUserActionResponseAction: "DEACTIVATE" | "ACTIVATE" | "DELETE";
4209
+ ChatHistoryQuery: {
4210
+ /** @description The data source a `runSql` query ran on. */
4211
+ dataSource?: string | null;
4212
+ error?: string | null;
4213
+ /** @description The latest thumbs up or down on this query, if any. */
4214
+ feedback?: components["schemas"]["ChatHistoryQueryFeedback"] | null;
4215
+ /** @description The tool-call message id. */
4216
+ messageId: string;
4217
+ /** @description Rows the query returned. The rows themselves are never included. */
4218
+ rowCount?: number | null;
4219
+ /** @description The SQL the agent generated. */
4220
+ sql?: string | null;
4221
+ /** @description `incomplete` when the query never returned: the turn was stopped or failed. */
4222
+ status: components["schemas"]["ChatHistoryQueryStatus"];
4223
+ title?: string | null;
4224
+ /** @description `cubeSqlApi` for a query against the semantic layer, `runSql` for one against a warehouse data source. */
4225
+ tool: string;
4226
+ };
4227
+ ChatHistoryQueryFeedback: {
4228
+ createdAt: string;
4229
+ isPositive: boolean;
4230
+ /** @description Who rated the query. */
4231
+ userId?: number | null;
4232
+ };
4233
+ /** @enum {string} */
4234
+ ChatHistoryQueryStatus: "success" | "error" | "incomplete";
4235
+ ChatHistoryThread: {
4236
+ /** @description Null for the Auto agent. */
4237
+ agentId?: number | null;
4238
+ /** @description The thread id, as used in chat URLs and the Chat API. */
4239
+ chatId: string;
4240
+ createdAt: string;
4241
+ /** @description The surface inside the app the thread began on; null when it was not recorded. */
4242
+ initialContext?: string | null;
4243
+ /** @description Where the thread was started; null for a source this API does not name. */
4244
+ source?: components["schemas"]["ChatHistoryThreadSource"] | null;
4245
+ title?: string | null;
4246
+ /** @description Oldest first. Present on a single thread, and on a list with `includeTurns=true`. */
4247
+ turns?: components["schemas"]["ChatHistoryTurn"][] | null;
4248
+ /** @description When the thread last changed, normally its latest turn. */
4249
+ updatedAt: string;
4250
+ user: components["schemas"]["ChatHistoryUser"];
4251
+ };
4252
+ ChatHistoryThreadListResponse: {
4253
+ items: components["schemas"]["ChatHistoryThread"][];
4254
+ pageInfo: components["schemas"]["PageInfo"];
4255
+ };
4256
+ /** @enum {string} */
4257
+ ChatHistoryThreadSource: "web" | "api" | "mcp" | "slack" | "scheduled";
4258
+ /** @enum {string} */
4259
+ ChatHistoryThreadsQuerySortBy: "createdAt" | "updatedAt";
4260
+ /** @enum {string} */
4261
+ ChatHistoryThreadsQuerySortOrder: "asc" | "desc";
4262
+ /** @enum {string} */
4263
+ ChatHistoryThreadsQueryUserType: "internal" | "external";
4264
+ ChatHistoryTurn: {
4265
+ /** @description The agent's last write in the turn. Null for turns recorded before Cube stored turn times. */
4266
+ endedAt?: string | null;
4267
+ /** @description Names of files the user attached. Their content is never included. */
4268
+ files: string[];
4269
+ /** @description The agent's last text reply in the turn; null when it answered only with a chart. */
4270
+ finalAnswer?: string | null;
4271
+ /** @description Position in the thread, from 0. */
4272
+ index: number;
4273
+ /** @description The id of the user message that opened the turn. */
4274
+ messageId: string;
4275
+ /** @description What the user asked, as they typed it. */
4276
+ prompt: string;
4277
+ queries: components["schemas"]["ChatHistoryQuery"][];
4278
+ /** @description When the user sent the prompt. Null for turns recorded before Cube stored turn times. */
4279
+ startedAt?: string | null;
4280
+ /** @description Every tool the agent called in the turn, in first-call order. */
4281
+ tools: string[];
4282
+ };
4283
+ ChatHistoryUser: {
4284
+ /** @description Null when the Cube user was deleted, or the embedded user had no email. */
4285
+ email?: string | null;
4286
+ /** @description Embedded users only. */
4287
+ externalId?: string | null;
4288
+ /** @description For a Cube user, their user id. For an embedded user, an id in a separate number space: identify them by `externalId`. */
4289
+ id: number;
4290
+ /** @description Cube users only. */
4291
+ name?: string | null;
4292
+ type: components["schemas"]["ChatHistoryUserType"];
4293
+ };
4294
+ /** @enum {string} */
4295
+ ChatHistoryUserType: "internal" | "external";
3955
4296
  ChatThreadPolicy: {
3956
- actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
4297
+ actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
3957
4298
  effect?: components["schemas"]["ChatThreadPolicyEffect"] | null;
3958
4299
  resourceType: components["schemas"]["ChatThreadPolicyResourceType"];
3959
4300
  resources: string[];
@@ -3961,7 +4302,7 @@ export interface components {
3961
4302
  /** @enum {string} */
3962
4303
  ChatThreadPolicyEffect: "allow" | "deny";
3963
4304
  /** @enum {string} */
3964
- ChatThreadPolicyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread";
4305
+ ChatThreadPolicyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread" | "ScheduledTask";
3965
4306
  ColumnFormatOverride: {
3966
4307
  decimalPlaces?: number | null;
3967
4308
  type: components["schemas"]["ColumnFormatOverrideDtoType"];
@@ -4049,6 +4390,7 @@ export interface components {
4049
4390
  /** @enum {string} */
4050
4391
  CreateDeploymentInputDeployMode: "git" | "cli";
4051
4392
  CreateDeploymentTokenInput: {
4393
+ /** @description Token lifetime in seconds, between 60 and 86400. Omit to keep the historical default of 24 hours (86400). Callers that hold the token outside a browser session — scripts, BI tools, scheduled jobs — should request a short lifetime and re-issue tokens instead. */
4052
4394
  expiresIn?: number | null;
4053
4395
  };
4054
4396
  CreateEmbedDashboardCommentBody: {
@@ -4056,6 +4398,7 @@ export interface components {
4056
4398
  parentId?: number | null;
4057
4399
  };
4058
4400
  CreateEmbedGroupInput: {
4401
+ /** @description Optional human-readable description. */
4059
4402
  description?: string | null;
4060
4403
  /** @description Group name, unique within the embed tenant. The `system:` prefix is reserved and rejected. */
4061
4404
  name: string;
@@ -4066,20 +4409,33 @@ export interface components {
4066
4409
  position?: number | null;
4067
4410
  };
4068
4411
  CreateNotificationInput: {
4412
+ /** @description Custom cron expression (required if scheduleType is CUSTOM) */
4069
4413
  customCron?: string | null;
4414
+ /** @description Numeric id of the dashboard to run on the schedule. Provide this OR dashboardPublicId (exactly one). */
4070
4415
  dashboardId?: number | null;
4416
+ /** @description Public id of the dashboard to run on the schedule. Provide this OR dashboardId (exactly one). */
4071
4417
  dashboardPublicId?: string | null;
4418
+ /** @description Day of month (1-31) */
4072
4419
  dayOfMonth?: number | null;
4420
+ /** @description Day of week (0-6, Sunday=0) */
4073
4421
  dayOfWeek?: number | null;
4422
+ /** @description Dimension filters applied to the dashboard when the notification is rendered (substituted into the screenshot/PDF for every recipient). */
4074
4423
  filters?: components["schemas"]["DashboardFilterInput"][] | null;
4424
+ /** @description Hour of the day (0-23) */
4075
4425
  hour?: number | null;
4426
+ /** @description Field-switcher selections applied to the dashboard when the notification is rendered. */
4076
4427
  memberSwitchers?: components["schemas"]["DashboardMemberSwitcherInput"][] | null;
4428
+ /** @description Minute of the hour (0-59) */
4077
4429
  minute?: number | null;
4430
+ /** @description Include an AI-generated "what changed" summary in the notification body. Off by default. */
4078
4431
  notificationAiSummary?: boolean | null;
4079
4432
  notificationEnabled?: boolean | null;
4080
4433
  notificationFormat?: components["schemas"]["CreateNotificationInputNotificationFormat"] | null;
4434
+ /** @description Type of schedule */
4081
4435
  scheduleType: components["schemas"]["CreateNotificationInputScheduleType"];
4436
+ /** @description Time-grain overrides applied to the dashboard when the notification is rendered. */
4082
4437
  timeGrains?: components["schemas"]["DashboardTimeGrainInput"][] | null;
4438
+ /** @description Timezone for the schedule (e.g. "America/New_York") */
4083
4439
  timezone?: string | null;
4084
4440
  };
4085
4441
  /** @enum {string} */
@@ -4117,11 +4473,15 @@ export interface components {
4117
4473
  CreateReportDeliveryInput: {
4118
4474
  destination: components["schemas"]["ReportDeliveryDestinationInput"];
4119
4475
  name: string;
4476
+ /** @description How the owner hears that the delivery failed or recovered. A delivery that runs more than once a day reports only changes in its status; a daily or rarer one reports every failed run. Omit it for the inbox only. */
4120
4477
  notifications?: components["schemas"]["ReportDeliveryNotificationsInput"] | null;
4121
4478
  /** @description Id of the report whose results are delivered. It must belong to this deployment, and the caller must be able to read it. */
4122
4479
  reportId: number;
4480
+ /** @description When the delivery runs. Omit it for a delivery that runs only on request. */
4123
4481
  schedule?: components["schemas"]["ReportDeliveryScheduleInput"] | null;
4482
+ /** @description Which columns land in the sheet, in what order, under which headers. Omit it to deliver every column the query returns, in its order, headed by its name. */
4124
4483
  shape?: components["schemas"]["ReportDeliveryShapeInput"] | null;
4484
+ /** @description What each run does with what the previous one wrote. `overwrite` (the default) replaces the delivered block. `append` adds the whole result below it, header only on the first run and no deduplication. `new_sheet` writes each run to a new tab. */
4125
4485
  writeMode?: components["schemas"]["CreateReportDeliveryInputWriteMode"] | null;
4126
4486
  };
4127
4487
  /** @enum {string} */
@@ -4152,14 +4512,19 @@ export interface components {
4152
4512
  /** @enum {string} */
4153
4513
  CreateReportInputSource: "GOOGLE_SHEETS" | "EXCEL" | "PLAYGROUND" | "D3";
4154
4514
  CreateScheduledTaskInput: {
4515
+ /** @description The agent that runs the task. Omit for the deployment default. */
4155
4516
  agentId?: number | null;
4517
+ /** @description Standard 5-field cron (minute hour day-of-month month day-of-week), e.g. `0 9 * * 1-5` for 9:00 on weekdays. A task runs at most once an hour, so the minute field is a single number. Null or omitted makes the task Manual: it runs only when started with `POST /scheduled-tasks/{taskId}/run`. */
4156
4518
  cronExpression?: string | null;
4157
4519
  description?: string | null;
4520
+ /** @description Create the schedule paused with `false`. Defaults to `true`. */
4158
4521
  isEnabled?: boolean | null;
4159
4522
  name: string;
4523
+ /** @description Notify the creator in Cube's notification inbox when a run finishes, whether it succeeds or fails. Defaults to `false`. */
4160
4524
  notificationEnabled?: boolean | null;
4161
4525
  /** @description What the agent is asked on every run, shown as the task's Instructions in Cube. Each run starts a new chat thread with no memory of earlier ones, so write the whole request. */
4162
4526
  prompt: string;
4527
+ /** @description IANA time zone the cron is read in, e.g. `America/New_York`. Defaults to `UTC`. */
4163
4528
  timezone?: string | null;
4164
4529
  };
4165
4530
  CreateWorkbookInput: {
@@ -4355,9 +4720,13 @@ export interface components {
4355
4720
  jobId: string;
4356
4721
  };
4357
4722
  DashboardExportStatusResponse: {
4723
+ /** @description MIME type of the rendered file. Present once `status` is `completed`. */
4358
4724
  contentType?: string | null;
4725
+ /** @description Why the render failed. Present only when `status` is `failed`. */
4359
4726
  error?: string | null;
4727
+ /** @description Rendering progress, 0-100, when the renderer reports one. */
4360
4728
  progress?: number | null;
4729
+ /** @description Job lifecycle: `pending` and `processing` mean keep polling, `completed` means the file is ready to download, `failed` means it will never be. */
4361
4730
  status: components["schemas"]["DashboardExportStatusResponseStatus"];
4362
4731
  };
4363
4732
  /** @enum {string} */
@@ -4371,12 +4740,17 @@ export interface components {
4371
4740
  value?: (string | number | boolean | unknown[]) | null;
4372
4741
  };
4373
4742
  DashboardFilterInput: {
4743
+ /** @description For string filters: whether matching is case-sensitive */
4374
4744
  caseSensitive?: any | null;
4745
+ /** @description For between filters: whether the end bound is inclusive */
4375
4746
  endInclusive?: any | null;
4376
4747
  /** @description Dimension path, e.g. "Orders.status" */
4377
4748
  member: string;
4749
+ /** @description Filter operator (defaults to "equals") */
4378
4750
  operator?: components["schemas"]["DashboardFilterInputOperator"] | null;
4751
+ /** @description For between filters: whether the start bound is inclusive */
4379
4752
  startInclusive?: any | null;
4753
+ /** @description Filter value. Omit for is_null / is_not_null / is_empty / is_not_empty; provide a 2-element [start, end] array for between. */
4380
4754
  value?: (string | number | boolean | unknown[]) | null;
4381
4755
  };
4382
4756
  /** @enum {string} */
@@ -4612,14 +4986,19 @@ export interface components {
4612
4986
  DatabricksMetricViewPublicationIssueStage: "INPUT" | "VIEW_PROJECTION" | "OSSIE_VALIDATION" | "OSSIE_TO_DATABRICKS" | "OUTPUT_VALIDATION" | "EXECUTION";
4613
4987
  DatabricksMetricViewPublicationPreviewInput: {
4614
4988
  dataSourceName: string;
4989
+ /** @description Choose every deployed Cube view ('all'), an exact ordered list ('selected'), or names matching viewNameRegex ('pattern'). */
4615
4990
  selectionMode: components["schemas"]["DatabricksMetricViewPublicationPreviewInputSelectionMode"];
4991
+ /** @description Optional map of Cube view name to the root source dataset the view projects from, for view projections where that root would otherwise be ambiguous. */
4616
4992
  sourceOverrides?: {
4617
4993
  [key: string]: string;
4618
4994
  } | null;
4995
+ /** @description Optional Cube view name to Databricks Metric View name overrides. */
4619
4996
  targetNames?: {
4620
4997
  [key: string]: string;
4621
4998
  } | null;
4999
+ /** @description A safe, bounded regex subset for view names. Supports literals, ^, $, dot, and one .* wildcard; grouping, alternation, lookaround, and backreferences are rejected. */
4622
5000
  viewNameRegex?: string | null;
5001
+ /** @description Required only when selectionMode is 'selected'. */
4623
5002
  viewNames?: string[] | null;
4624
5003
  };
4625
5004
  /** @enum {string} */
@@ -4695,6 +5074,7 @@ export interface components {
4695
5074
  metricViewName: string;
4696
5075
  metricViewSha256?: string | null;
4697
5076
  metricViewYaml?: string | null;
5077
+ /** @description 'partial' means the view published without measures it cannot represent; read withheldMembers for which. */
4698
5078
  outcome: components["schemas"]["DatabricksMetricViewPublicationViewResultOutcome"];
4699
5079
  source?: string | null;
4700
5080
  /** @description Measures this view could not publish, each named with the cube it comes from. A view with entries here is queryable but incomplete. */
@@ -4731,10 +5111,12 @@ export interface components {
4731
5111
  /** @description How many published views are missing measures the conversion could not represent. A run reports COMPLETED with this above zero, because every view published — so automation that treats COMPLETED as "fully published" should assert this is 0. Read views[].withheldMembers for which measures, and why. */
4732
5112
  incompleteViewCount: number;
4733
5113
  integrationPublicId: string;
5114
+ /** @description Live progress while the run is active; null once it is terminal. */
4734
5115
  progress?: components["schemas"]["DatabricksMetricViewSyncProgressResponse"] | null;
4735
5116
  runId: string;
4736
5117
  stage?: string | null;
4737
5118
  startedAt?: string | null;
5119
+ /** @description PARTIAL means at least one view published and another did not. Every non-successful view keeps its previous Databricks definition. */
4738
5120
  status: components["schemas"]["DatabricksMetricViewSyncRunResponseStatus"];
4739
5121
  targetCatalog?: string | null;
4740
5122
  targetSchema?: string | null;
@@ -4761,6 +5143,7 @@ export interface components {
4761
5143
  };
4762
5144
  DatabricksMetricViewSyncViewOutcomeResponse: {
4763
5145
  cubeViewName: string;
5146
+ /** @description A stable reason code, never raw Databricks output. */
4764
5147
  detail?: string | null;
4765
5148
  outcome: components["schemas"]["DatabricksMetricViewSyncViewOutcomeResponseOutcome"];
4766
5149
  /** @description Measures this view published without, as 'cube.member'. Non-empty means the Metric View is queryable but incomplete. */
@@ -4791,10 +5174,12 @@ export interface components {
4791
5174
  pageInfo: components["schemas"]["PageInfo"];
4792
5175
  };
4793
5176
  DbtSyncLogEntry: {
5177
+ /** @description For a phase line, how long the phase took, in milliseconds. */
4794
5178
  durationMs?: number | null;
4795
5179
  /** @description info or error. */
4796
5180
  level: string;
4797
5181
  message: string;
5182
+ /** @description The phase this line belongs to, e.g. dbt-compile. */
4798
5183
  phase?: string | null;
4799
5184
  /** @description Always "system" in this version. "stdout" and "stderr" join it once dbt’s own output is captured, so treat this as an open set. */
4800
5185
  stream: string;
@@ -4807,6 +5192,7 @@ export interface components {
4807
5192
  sources: number;
4808
5193
  };
4809
5194
  DbtSyncProgress: {
5195
+ /** @description Human-readable description of what the sync is doing right now. */
4810
5196
  message?: string | null;
4811
5197
  /** @description Rough completion percentage derived from the stage. Progress reporting only — do not gate on it; gate on the status reaching COMPLETED or FAILED. */
4812
5198
  percentComplete: number;
@@ -4833,13 +5219,20 @@ export interface components {
4833
5219
  DbtSyncRun: {
4834
5220
  /** @description The Cube branch this sync wrote its generated cubes to. */
4835
5221
  branchName: string;
5222
+ /** @description When the sync finished, as an ISO 8601 timestamp, or null while it is still running. This is stamped by the process that ran the sync whereas startedAt is stamped by the process that launched it — two different clocks — so for a run that failed moments after starting, completedAt can even precede startedAt. Use durationMs to show how long a run took rather than subtracting these. */
4836
5223
  completedAt?: string | null;
4837
5224
  deploymentId: number;
5225
+ /** @description How long the sync took, in milliseconds, and the value to use when showing a duration. Measured from a single clock, so it is never negative — prefer it over subtracting startedAt from completedAt, which can disagree with it by a small skew. */
4838
5226
  durationMs?: number | null;
5227
+ /** @description Why the sync stopped. Present only for a failed run. */
4839
5228
  errorMessage?: string | null;
5229
+ /** @description The phase that failed, e.g. dbt-compile. */
4840
5230
  failedPhase?: string | null;
5231
+ /** @description The dbt-repository ref this sync was run against, when pinned. */
4841
5232
  gitRef?: string | null;
5233
+ /** @description The pipeline stage the run reached, e.g. COMPILING_DBT. */
4842
5234
  lastStage?: string | null;
5235
+ /** @description Per-phase timings, in the order they ran. Absent while the sync is running. */
4843
5236
  phases?: components["schemas"]["DbtSyncRunPhase"][] | null;
4844
5237
  /** @description Where this sync got its dbt metadata: `git` (Cube cloned the dbt repository and ran dbt) or `manifest` (the caller uploaded a `manifest.json` and no repository was accessed). Runs predating the manifest source report `git`. */
4845
5238
  source: string;
@@ -4852,6 +5245,7 @@ export interface components {
4852
5245
  /** @description What started the sync: manual (the Cube Cloud UI), api (this REST API), webhook (a push to the dbt repository), agent (Cube AI), or unknown. */
4853
5246
  trigger: string;
4854
5247
  triggerContext?: components["schemas"]["DbtSyncRunTriggerContext"] | null;
5248
+ /** @description The Cube user who started the sync, when a user started it. */
4855
5249
  userId?: number | null;
4856
5250
  };
4857
5251
  DbtSyncRunListResponse: {
@@ -4869,12 +5263,19 @@ export interface components {
4869
5263
  startedOffsetMs: number;
4870
5264
  };
4871
5265
  DbtSyncRunStats: {
5266
+ /** @description How many cubes the sync generated. */
4872
5267
  cubeCount?: number | null;
5268
+ /** @description The dbt version that produced the converted manifest, from its `metadata` block. Advisory — absent when the producer omitted it. */
4873
5269
  dbtVersion?: string | null;
5270
+ /** @description How many files the sync wrote to the branch it created. */
4874
5271
  generatedFileCount?: number | null;
5272
+ /** @description dbt macros found in the manifest. */
4875
5273
  macros?: number | null;
5274
+ /** @description When dbt generated the converted manifest, as an ISO 8601 timestamp. For an uploaded manifest this is how you tell a stale upload from a fresh one; it is NOT when the sync ran. */
4876
5275
  manifestGeneratedAt?: string | null;
5276
+ /** @description dbt models found in the manifest. */
4877
5277
  models?: number | null;
5278
+ /** @description dbt sources found in the manifest. */
4878
5279
  sources?: number | null;
4879
5280
  };
4880
5281
  DbtSyncRunTriggerContext: {
@@ -4887,6 +5288,7 @@ export interface components {
4887
5288
  /** @enum {string} */
4888
5289
  DbtSyncRunsQueryTrigger: "manual" | "api" | "webhook" | "agent" | "unknown";
4889
5290
  DbtSyncStatusResponse: {
5291
+ /** @description Why the sync stopped. Present only when the status is FAILED. */
4890
5292
  error?: string | null;
4891
5293
  progress: components["schemas"]["DbtSyncProgress"];
4892
5294
  /** @description One of INITIALIZING, CREATING_SANDBOX, UPLOADING_PROJECT, INSTALLING_DEPENDENCIES, RUNNING_DBT_DEPS, COMPILING_DBT, PROCESSING_MANIFEST, WRITING_CUBE_FILES, FINALIZING, COMPLETED, FAILED. COMPLETED and FAILED are the only terminal values: poll until one of them, then read the result. Treat any unrecognized value as still running. */
@@ -4940,6 +5342,10 @@ export interface components {
4940
5342
  data: components["schemas"]["DeploymentEnvironmentToken"][];
4941
5343
  items: components["schemas"]["DeploymentEnvironmentToken"][];
4942
5344
  pageInfo?: components["schemas"]["PageInfo"] | null;
5345
+ /**
5346
+ * @deprecated
5347
+ * @description Deprecated: use `pageInfo` instead. Kept for backward compatibility.
5348
+ */
4943
5349
  pagination?: components["schemas"]["DeploymentsPagination"] | null;
4944
5350
  };
4945
5351
  /** @enum {string} */
@@ -4952,6 +5358,10 @@ export interface components {
4952
5358
  data: components["schemas"]["DeploymentEnvironment"][];
4953
5359
  items: components["schemas"]["DeploymentEnvironment"][];
4954
5360
  pageInfo?: components["schemas"]["PageInfo"] | null;
5361
+ /**
5362
+ * @deprecated
5363
+ * @description Deprecated: use `pageInfo` instead. Kept for backward compatibility.
5364
+ */
4955
5365
  pagination?: components["schemas"]["DeploymentsPagination"] | null;
4956
5366
  };
4957
5367
  DeploymentLogLine: {
@@ -5042,6 +5452,10 @@ export interface components {
5042
5452
  pageInfo?: components["schemas"]["PageInfo"] | null;
5043
5453
  };
5044
5454
  DeploymentsListResponse: {
5455
+ /**
5456
+ * @deprecated
5457
+ * @description Deprecated: total number of accessible deployments, ignoring pagination. Kept for backward compatibility.
5458
+ */
5045
5459
  count?: number | null;
5046
5460
  /**
5047
5461
  * @deprecated
@@ -5055,6 +5469,10 @@ export interface components {
5055
5469
  * @description Deprecated: use `pageInfo` instead. Kept for backward compatibility.
5056
5470
  */
5057
5471
  pagination: components["schemas"]["DeploymentsPagination"];
5472
+ /**
5473
+ * @deprecated
5474
+ * @description Deprecated: use `count`. Kept for backward compatibility.
5475
+ */
5058
5476
  totalCount?: number | null;
5059
5477
  };
5060
5478
  DeploymentsPagination: {
@@ -5118,7 +5536,9 @@ export interface components {
5118
5536
  pageInfo: components["schemas"]["PageInfo"];
5119
5537
  };
5120
5538
  EmbedGroupMemberInput: {
5539
+ /** @description Numeric id of an existing embed user. Provide this OR `externalId`. */
5121
5540
  embedUserId?: number | null;
5541
+ /** @description External id of the embed user (the `externalId` passed to `generate-session`). Provide this OR `embedUserId`. */
5122
5542
  externalId?: string | null;
5123
5543
  };
5124
5544
  EmbedGroupMembersInput: {
@@ -5145,16 +5565,27 @@ export interface components {
5145
5565
  sqlQuery: string;
5146
5566
  };
5147
5567
  EmbedSessionSettings: {
5568
+ /** @description Whether this session may use AI at all. This is the master switch over every AI surface in the embed: the dashboard agent, the workbook chat, the AI summary widgets and the standalone embedded chat. Omit to inherit the account-wide embed setting (allowed by default); `false` disables AI even if it is enabled account-wide. Unlike the `show*` keys below it is enforced server-side — the session cannot obtain AI Chat credentials at all, so no request made with it can consume AI tokens — and it outranks them: a `false` here disables a surface whose own `show*` key is `true`. It does not change user roles or permissions for non-AI API calls. `null` is accepted and means the same as omitting it. */
5148
5569
  allowAi?: boolean | null;
5570
+ /** @description Whether AI Chat authenticated with this session may create or modify persistent Cube Workspace content. Set to `false` for headless chat integrations that render answers in their own UI: ad-hoc data analysis and inline tables/charts remain available, but the agent cannot save or update standalone explorations/reports, create or modify workbooks, create or publish dashboards, or direct users to those Cube UI surfaces. Omit or set to `true` to preserve the session user's role-derived authoring capabilities; `true` never grants access the user does not already have. This setting changes only AI Chat tools and instructions. It does not change user roles or permissions for direct API calls. */
5149
5571
  allowChatWorkspaceAuthoring?: boolean | null;
5572
+ /** @description UI language for every embed viewed with this session, as a BCP-47 code — a full code (`es-ES`), a short code (`es`) or a regional variant all resolve to a shipped locale. Sits between the per-iframe `?locale=` parameter, which still wins because it is the more specific answer, and the account-wide default under Embed → Settings. A language Cube does not ship falls through to that default rather than failing the session. */
5150
5573
  locale?: string | null;
5574
+ /** @description Whether AI summary widgets are authorable and refreshable with this session: the "AI widget" entry in the dashboard editor's Add widgets menu, and the prompt input plus Generate/Regenerate controls on an existing widget. An already-generated summary still renders, so a published dashboard keeps its content — it simply cannot be regenerated. Omit to inherit the account-wide embed setting (enabled by default); `false` disables them even if they are enabled account-wide, `true` enables them even if they are disabled account-wide. */
5151
5575
  showAiWidgets?: boolean | null;
5576
+ /** @description Whether embedded published dashboards viewed with this session show the AI chat (agent panel and launcher bubble). Omit to inherit the account-wide embed setting (shown by default); `false` hides the chat even if it is enabled account-wide, `true` shows it even if it is disabled account-wide. Only affects the dashboard surface, and only hides the entry point — use `allowAi` to withhold AI from the session. */
5152
5577
  showDashboardChat?: boolean | null;
5578
+ /** @description Whether the dashboard editor viewed with this session offers its settings panel — the gear button and the sidebar behind it. That panel is the ONLY place an embed user can reach the dashboard slug, the per-dashboard time zone, the per-dashboard agent, the grid behaviour switches and the dashboard theme, so `false` withdraws all of them together. Omit or set to `true` to keep the panel (the default). */
5153
5579
  showDashboardSettings?: boolean | null;
5580
+ /** @description Whether the workbook data pane viewed with this session offers the "Group by Cube" / "Group by Folder" item in its more-actions menu. `false` hides the item AND pins the pane to the grouping it would have defaulted to — by folder when the view defines folders, by cube otherwise. The choice is remembered per browser, so pinning is what makes the pane look the same for every user of the session rather than freezing whatever each of them last picked. No content is withdrawn either way. Omit or set to `true` to leave the choice with the user (the default). */
5154
5581
  showGroupByCube?: boolean | null;
5582
+ /** @description Whether the workbook data pane viewed with this session may display raw member NAMES instead of their titles (the "Show Member Names" item in the pane's more-actions menu). Member names are the data model's own identifiers, so this is a schema-protection setting in the same family as the account-wide Show Generated SQL switch. `false` hides the menu item AND pins the pane to titles, so a user who already switched to names is returned to titles — hiding the control alone would leave them stuck on names with no way back. Omit or set to `true` to leave the choice with the user (the default). */
5155
5583
  showMemberNames?: boolean | null;
5584
+ /** @description Whether the Creator Mode workbook viewed with this session shows its AI entry points: the chat side panel and its toggle, the launchpad's "Ask Cube Agent" button and the "Fix in chat" action on a failed report. Omit to inherit the account-wide embed setting (shown by default); `false` hides them even if they are enabled account-wide, `true` shows them even if they are disabled account-wide. Hides entry points only — use `allowAi` to withhold AI from the session. */
5156
5585
  showWorkbookChat?: boolean | null;
5586
+ /** @description Whether the Creator Mode workspace viewed with this session offers sharing: the workbook header's Share button and the Share action on a workbook, dashboard, exploration or folder row in the workspace list. Set to `false` for a deployment where each embed user should only ever see their own content. Omit or set to `true` to keep sharing available (the default). Hides the entry points only — it does not revoke access already granted, and it never widens what the session's own permissions allow. */
5157
5587
  showWorkbookShare?: boolean | null;
5588
+ /** @description IANA time zone the agent runs its queries in for every embed viewed with this session (e.g. `America/New_York`). Sits between the per-iframe `?timezone=` parameter and the account-wide default, and remains subject to the tenant time-zone policy — it is not a way around it. A bare UTC offset or an unknown name falls through to the account default rather than failing the session, because Cube would compute in UTC and report nothing. */
5158
5589
  timezone?: string | null;
5159
5590
  };
5160
5591
  EmbedSettings: {
@@ -5240,6 +5671,7 @@ export interface components {
5240
5671
  questionTextSnapshot: string;
5241
5672
  score?: number | null;
5242
5673
  updatedAt: string;
5674
+ /** @description Question outcome: pass, fail, review, skipped, or error. */
5243
5675
  verdict?: string | null;
5244
5676
  };
5245
5677
  EvaluationResultsListResponse: {
@@ -5262,15 +5694,23 @@ export interface components {
5262
5694
  updatedAt: string;
5263
5695
  };
5264
5696
  ExportSubjectInput: {
5697
+ /** @description Main user email (for type=USER; provide this OR userId). For type=EMBED_USER it is the email recorded on the provisioned embed user, and the externalId is used when it is omitted. */
5265
5698
  email?: string | null;
5699
+ /** @description Embed tenant name (for type=EMBED_USER) */
5266
5700
  embedTenantName?: string | null;
5701
+ /** @description Embed user external id (for type=EMBED_USER). The user is provisioned if it does not exist yet. */
5267
5702
  externalId?: string | null;
5703
+ /** @description Embed user groups (type=EMBED_USER). Must reference groups that already exist; drives what the rendered dashboard is allowed to show. */
5268
5704
  groups?: string[] | null;
5705
+ /** @description Security context applied to the embed user before rendering (type=EMBED_USER) — the same object a generate-session call takes. Row-level rules in the data model see exactly this. */
5269
5706
  securityContext?: {
5270
5707
  [key: string]: any;
5271
5708
  } | null;
5709
+ /** @description Subject kind */
5272
5710
  type: components["schemas"]["ExportSubjectInputType"];
5711
+ /** @description Embed user attribute values (type=EMBED_USER). Names must reference attribute definitions that already exist. */
5273
5712
  userAttributes?: components["schemas"]["UserAttributeInput"][] | null;
5713
+ /** @description Main user id (for type=USER; provide this OR email) */
5274
5714
  userId?: number | null;
5275
5715
  };
5276
5716
  /** @enum {string} */
@@ -5307,7 +5747,9 @@ export interface components {
5307
5747
  member: string;
5308
5748
  };
5309
5749
  FinishUploadBody: {
5750
+ /** @default true */
5310
5751
  autoRemoveFiles?: boolean | null;
5752
+ /** @default true */
5311
5753
  awaitGitOperations?: boolean | null;
5312
5754
  commitMessage?: string | null;
5313
5755
  files: Record<string, never>;
@@ -5333,6 +5775,10 @@ export interface components {
5333
5775
  /** @enum {string} */
5334
5776
  FolderDtoType: "FOLDER" | "WORKBOOK" | "REPORT";
5335
5777
  FoldersListResponse: {
5778
+ /**
5779
+ * @deprecated
5780
+ * @description Deprecated: total number of accessible folders, ignoring pagination. Kept for backward compatibility.
5781
+ */
5336
5782
  count?: number | null;
5337
5783
  /**
5338
5784
  * @deprecated
@@ -5346,6 +5792,7 @@ export interface components {
5346
5792
  token: string;
5347
5793
  };
5348
5794
  GenerateSession: {
5795
+ /** @description Branch of `deploymentId` whose data model this session queries. Omit it — or pass the deployment’s production branch — to query the production environment, which is the default. Any other branch of the deployment is accepted: a branch with a staging environment enabled, a shared branch, or a personal dev branch. The branch must be served when the session is generated, otherwise the request is rejected: a branch without a staging environment runs only while someone has it open in Cube (dev mode or the branch switcher), so enable its staging environment for a branch an embedded app should be able to reach at any time. A name that is not a branch of the deployment returns `404`. Content (dashboards, workbooks, reports) is not branch-scoped — the same saved content is rendered against the branch’s data model. */
5349
5796
  branchName?: string | null;
5350
5797
  creatorMode?: boolean | null;
5351
5798
  deploymentId: number;
@@ -5354,7 +5801,12 @@ export interface components {
5354
5801
  embedTenantProfile?: components["schemas"]["EmbedTenantProfile"] | null;
5355
5802
  embedTheme?: components["schemas"]["EmbedTheme"] | null;
5356
5803
  externalId?: string | null;
5804
+ /**
5805
+ * @deprecated
5806
+ * @description Deprecated and ignored. Global groups can no longer be created through this endpoint — define them beforehand via the Cube UI or admin API. Still accepted for backward compatibility (no error), but it has no effect. To create per-embed-tenant groups, use `tenantGroupDefinitions`.
5807
+ */
5357
5808
  groupDefinitions?: components["schemas"]["GroupDefinition"][] | null;
5809
+ /** @description Global user groups — defined once at the tenant level and shared across every embed tenant — to assign this embed user to. Use `groups` for **data-model access control**: each name is placed verbatim into the Cube security context as `cubeCloud.groups`, where your data model's `access_policy` rules reference it to gate cubes, views, members, and row-/column-level filters. The groups must already exist in the tenant (create them via the Cube UI or admin API beforehand) — this endpoint never creates global groups, and names that do not resolve to an existing group are rejected. Global groups are NOT shown in an embed tenant’s Creator Mode UI. To share or organize content inside a single embed tenant, use `tenantGroups` instead. */
5358
5810
  groups?: string[] | null;
5359
5811
  internalId?: string | null;
5360
5812
  isEphemeral?: boolean | null;
@@ -5363,8 +5815,11 @@ export interface components {
5363
5815
  securityContext?: {
5364
5816
  [key: string]: any;
5365
5817
  } | null;
5818
+ /** @description Per-session overrides for embed behavior, stored in the signed embed token. Each documented key applies only to this session; omitted keys preserve their existing default behavior. */
5366
5819
  settings?: components["schemas"]["EmbedSessionSettings"] | null;
5820
+ /** @description Idempotently create or update the per-embed-tenant groups referenced by `tenantGroups`, before they are assigned. Requires `creatorMode: true` and `embedTenantName`. Use this to declare a tenant’s groups in the same call that assigns them, so you do not need a separate admin request. Applies only to per-embed-tenant groups; global groups must be defined beforehand. */
5367
5821
  tenantGroupDefinitions?: components["schemas"]["GroupDefinition"][] | null;
5822
+ /** @description Per-embed-tenant user groups — scoped to the single embed tenant named by `embedTenantName` — to assign this embed user to. Use `tenantGroups` for **content sharing and organization within one embed tenant**: for example, so a creator can share a workbook, dashboard, or folder with a group of that tenant’s users. These are the only groups shown in the embed tenant’s Creator Mode UI. Requires `creatorMode: true` and `embedTenantName`. Define the groups beforehand — or in the same request — via `tenantGroupDefinitions`. In the Cube security context they appear namespaced as `system:tenant:{embedTenantName}:group:{groupName}`, so a tenant group can never collide with — or be mistaken for — a global `groups` entry of the same name. For organization-wide data-model access policies, use `groups`. */
5368
5823
  tenantGroups?: string[] | null;
5369
5824
  userAttributeDefinitions?: components["schemas"]["UserAttributeDefinition"][] | null;
5370
5825
  userAttributes?: components["schemas"]["UserAttributeInput"][] | null;
@@ -5376,7 +5831,7 @@ export interface components {
5376
5831
  /** @enum {string} */
5377
5832
  GetDeploymentEnvironmentsQueryType: "production" | "staging" | "development";
5378
5833
  /** @enum {string} */
5379
- GetReportDeliveriesQueryStatus: "active" | "failing" | "needs_reconnect" | "orphaned";
5834
+ GetReportDeliveriesQueryStatus: "active" | "failing" | "needs_reconnect" | "no_sheet_access" | "orphaned";
5380
5835
  /** @enum {string} */
5381
5836
  GetReportDeliveryRunsQuerySortDirection: "ASC" | "DESC";
5382
5837
  /** @enum {string} */
@@ -5384,7 +5839,7 @@ export interface components {
5384
5839
  /** @enum {string} */
5385
5840
  GetReportsQuerySortDirection: "ASC" | "DESC";
5386
5841
  /** @enum {string} */
5387
- GetResourcePoliciesQueryResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread";
5842
+ GetResourcePoliciesQueryResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread" | "ScheduledTask";
5388
5843
  /** @enum {string} */
5389
5844
  GetUserAttributesQueryType: "string" | "number" | "boolean" | "string_array" | "number_array";
5390
5845
  /** @enum {string} */
@@ -5450,7 +5905,7 @@ export interface components {
5450
5905
  userCount?: number | null;
5451
5906
  };
5452
5907
  /** @enum {string} */
5453
- InheritedGroupPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
5908
+ InheritedGroupPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
5454
5909
  InheritedUserPolicyDto: {
5455
5910
  action: components["schemas"]["InheritedUserPolicyDtoAction"];
5456
5911
  email?: string | null;
@@ -5460,7 +5915,7 @@ export interface components {
5460
5915
  userId?: number | null;
5461
5916
  };
5462
5917
  /** @enum {string} */
5463
- InheritedUserPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
5918
+ InheritedUserPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
5464
5919
  JsonConfigFileDto: {
5465
5920
  /** @description The configuration as canonical JSON text: keys sorted, 2-space indentation, trailing newline. `oldText` in a replacement must match this text exactly. */
5466
5921
  content: string;
@@ -5511,16 +5966,19 @@ export interface components {
5511
5966
  cronExpression: string;
5512
5967
  dashboardId: number;
5513
5968
  deploymentId: number;
5969
+ /** @description Dimension filters applied when the notification is rendered. */
5514
5970
  filters?: components["schemas"]["DashboardFilter"][] | null;
5515
5971
  /** @description Human-readable description of the cron schedule */
5516
5972
  humanReadableSchedule: string;
5517
5973
  id: number;
5518
5974
  isEnabled: boolean;
5975
+ /** @description Field-switcher selections applied when the notification is rendered. */
5519
5976
  memberSwitchers?: components["schemas"]["DashboardMemberSwitcher"][] | null;
5520
5977
  /** @description Whether this notification carries an AI-generated "what changed" summary in its body. */
5521
5978
  notificationAiSummary: boolean;
5522
5979
  notificationEnabled: boolean;
5523
5980
  notificationFormat: string;
5981
+ /** @description Time-grain overrides applied when the notification is rendered. */
5524
5982
  timeGrains?: components["schemas"]["DashboardTimeGrain"][] | null;
5525
5983
  timezone: string;
5526
5984
  };
@@ -5536,17 +5994,27 @@ export interface components {
5536
5994
  username?: string | null;
5537
5995
  };
5538
5996
  NotificationRecipientInput: {
5997
+ /** @description Slack channel id (for type=SLACK) */
5539
5998
  channelId?: string | null;
5999
+ /** @description Slack channel display name (optional, for type=SLACK) */
5540
6000
  channelName?: string | null;
6001
+ /** @description Main user email (for type=USER; provide this OR userId) */
5541
6002
  email?: string | null;
6003
+ /** @description Embed tenant name (for type=EMBED_USER) */
5542
6004
  embedTenantName?: string | null;
6005
+ /** @description Embed user external id (for type=EMBED_USER) */
5543
6006
  externalId?: string | null;
6007
+ /** @description Embed user groups (type=EMBED_USER). Must reference groups that already exist; drives per-recipient access when the report is rendered. */
5544
6008
  groups?: string[] | null;
6009
+ /** @description Embed user security context (type=EMBED_USER). Applied for per-recipient row-level security when the report is rendered. */
5545
6010
  securityContext?: {
5546
6011
  [key: string]: any;
5547
6012
  } | null;
6013
+ /** @description Recipient kind */
5548
6014
  type: components["schemas"]["NotificationRecipientInputType"];
6015
+ /** @description Embed user attribute values (type=EMBED_USER). Names must reference attribute definitions that already exist. */
5549
6016
  userAttributes?: components["schemas"]["UserAttributeInput"][] | null;
6017
+ /** @description Main user id (for type=USER; provide this OR email) */
5550
6018
  userId?: number | null;
5551
6019
  };
5552
6020
  /** @enum {string} */
@@ -5602,33 +6070,149 @@ export interface components {
5602
6070
  };
5603
6071
  /** @enum {string} */
5604
6072
  OidcTokenConfigDTOSubjectType: "deployment" | "user";
5605
- PageInfo: {
5606
- endCursor?: string | null;
5607
- hasNextPage: boolean;
5608
- hasPreviousPage: boolean;
5609
- startCursor?: string | null;
5610
- };
5611
- PeriodComparison: {
5612
- measure: string;
5613
- offset: components["schemas"]["PeriodComparisonOffset"];
5614
- outputs?: string[] | null;
5615
- timeDimension: string;
6073
+ OssieConversionCounts: {
6074
+ /** @description Cube cubes. */
6075
+ cubes: number;
6076
+ /** @description Ossie datasets. */
6077
+ datasets: number;
6078
+ /** @description Ossie dataset fields. */
6079
+ fields: number;
6080
+ /** @description Cube data model files. */
6081
+ files: number;
6082
+ issues: components["schemas"]["OssieConversionIssueCounts"];
6083
+ /** @description Ossie metrics. */
6084
+ metrics: number;
6085
+ /** @description Ossie relationships. */
6086
+ relationships: number;
6087
+ /** @description Cube views. */
6088
+ views: number;
6089
+ };
6090
+ OssieConversionFile: {
6091
+ content: string;
6092
+ /** @description For an export, `ossie.yaml`. For an import, the path of the generated file within the data model project. */
6093
+ path: string;
5616
6094
  };
5617
- PeriodComparisonOffset: {
5618
- amount: number;
5619
- unit: string;
6095
+ OssieConversionFilesListResponse: {
6096
+ /** @description The converted files, empty when the conversion failed. */
6097
+ items: components["schemas"]["OssieConversionFile"][];
6098
+ pageInfo: components["schemas"]["PageInfo"];
5620
6099
  };
5621
- PivotItems: {
5622
- columns: string[];
5623
- displayScale?: components["schemas"]["PivotItemsDisplayScale"] | null;
5624
- filters: string[];
5625
- measures: string[];
5626
- measuresAxis?: components["schemas"]["PivotItemsMeasuresAxis"] | null;
5627
- measuresPosition?: components["schemas"]["PivotItemsMeasuresPosition"] | null;
5628
- rows: string[];
5629
- showAppliedFilters?: boolean | null;
5630
- showColumnTotals?: boolean | null;
5631
- showRowTotals?: boolean | null;
6100
+ OssieConversionInput: {
6101
+ /** @description Import only. The dataset the generated view is rooted at, for an Ossie model whose relationships do not determine one. */
6102
+ baseCube?: string | null;
6103
+ /** @description Import only. The warehouse dialect whose expressions are preferred where the Ossie model has several; ANSI_SQL is always the fallback. Defaults to the dialect of the deployment's default data source, or ANSI_SQL. */
6104
+ dialect?: components["schemas"]["OssieConversionInputDialect"] | null;
6105
+ /** @description 'export' converts a Cube data model to an Ossie model; 'import' converts an Ossie model to Cube data model files. */
6106
+ direction: components["schemas"]["OssieConversionInputDirection"];
6107
+ /** @description Export with source 'files' only. Relative `.yml`/`.yaml` paths mapped to their contents, such as a local checkout of the data model. Other files are not accepted. */
6108
+ files?: {
6109
+ [key: string]: string;
6110
+ } | null;
6111
+ /** @description Import only. The Ossie YAML document to convert. */
6112
+ ossieYaml?: string | null;
6113
+ /** @description Export only. 'deployment' (the default) converts the YAML data model of the deployment's latest successful build; 'files' converts the `files` sent with the request. */
6114
+ source?: components["schemas"]["OssieConversionInputSource"] | null;
6115
+ /** @description Export only. Refuse a metric whose value join fan-out could change, instead of converting it with a warning. Defaults to false for a whole-model export and true for a view export. */
6116
+ strictFanout?: boolean | null;
6117
+ /** @description Export only. Convert just this view's public members instead of the whole model. */
6118
+ view?: string | null;
6119
+ };
6120
+ /** @enum {string} */
6121
+ OssieConversionInputDialect: "ANSI_SQL" | "SNOWFLAKE" | "DATABRICKS" | "BIGQUERY";
6122
+ /** @enum {string} */
6123
+ OssieConversionInputDirection: "export" | "import";
6124
+ /** @enum {string} */
6125
+ OssieConversionInputSource: "deployment" | "files";
6126
+ OssieConversionIssue: {
6127
+ /** @description The converter issue type, such as DROPPED_MEASURE or CONVERSION_FAILED. */
6128
+ code: string;
6129
+ /** @description The model element the issue is about. */
6130
+ element?: string | null;
6131
+ message: string;
6132
+ /** @description ERROR fails the conversion. WARNING marks something dropped or changed. INFO marks something kept in another form. */
6133
+ severity: components["schemas"]["OssieConversionIssueSeverity"];
6134
+ };
6135
+ OssieConversionIssueCounts: {
6136
+ error: number;
6137
+ info: number;
6138
+ warning: number;
6139
+ };
6140
+ /** @enum {string} */
6141
+ OssieConversionIssueSeverity: "ERROR" | "WARNING" | "INFO";
6142
+ OssieConversionResultResponse: {
6143
+ completedAt: string;
6144
+ conversionId: string;
6145
+ counts: components["schemas"]["OssieConversionCounts"];
6146
+ deploymentId: number;
6147
+ direction: components["schemas"]["OssieConversionResultResponseDirection"];
6148
+ durationMs: number;
6149
+ issues: components["schemas"]["OssieConversionIssue"][];
6150
+ /** @description 'failed' exactly when an issue has severity ERROR. */
6151
+ outcome: components["schemas"]["OssieConversionResultResponseOutcome"];
6152
+ runtime: components["schemas"]["OssieConversionRuntime"];
6153
+ /** @description SHA-256 of the converted input. */
6154
+ sourceSha256: string;
6155
+ };
6156
+ /** @enum {string} */
6157
+ OssieConversionResultResponseDirection: "export" | "import";
6158
+ /** @enum {string} */
6159
+ OssieConversionResultResponseOutcome: "success" | "failed";
6160
+ OssieConversionRuntime: {
6161
+ cubeConverterVersion: string;
6162
+ /** @description The apache/ossie commit the converter was built from. */
6163
+ ossieCommit: string;
6164
+ ossieCoreVersion: string;
6165
+ };
6166
+ OssieConversionStartResponse: {
6167
+ conversionId: string;
6168
+ resultUrl: string;
6169
+ status: components["schemas"]["OssieConversionStartResponseStatus"];
6170
+ statusUrl: string;
6171
+ };
6172
+ /** @enum {string} */
6173
+ OssieConversionStartResponseStatus: "QUEUED";
6174
+ OssieConversionStatusResponse: {
6175
+ conversionId: string;
6176
+ deploymentId: number;
6177
+ direction: components["schemas"]["OssieConversionStatusResponseDirection"];
6178
+ /** @description Why the job ended without a result. */
6179
+ error?: string | null;
6180
+ startedAt: string;
6181
+ /** @description One of QUEUED, RUNNING, COMPLETED, FAILED or CANCELLED. COMPLETED means a result is available, even when the conversion itself failed; read its outcome. FAILED means the job ended without a result. */
6182
+ status: components["schemas"]["OssieConversionStatusResponseStatus"];
6183
+ updatedAt: string;
6184
+ };
6185
+ /** @enum {string} */
6186
+ OssieConversionStatusResponseDirection: "export" | "import";
6187
+ /** @enum {string} */
6188
+ OssieConversionStatusResponseStatus: "QUEUED" | "RUNNING" | "COMPLETED" | "FAILED" | "CANCELLED";
6189
+ PageInfo: {
6190
+ endCursor?: string | null;
6191
+ hasNextPage: boolean;
6192
+ hasPreviousPage: boolean;
6193
+ startCursor?: string | null;
6194
+ };
6195
+ PeriodComparison: {
6196
+ measure: string;
6197
+ offset: components["schemas"]["PeriodComparisonOffset"];
6198
+ outputs?: string[] | null;
6199
+ timeDimension: string;
6200
+ };
6201
+ PeriodComparisonOffset: {
6202
+ amount: number;
6203
+ unit: string;
6204
+ };
6205
+ PivotItems: {
6206
+ columns: string[];
6207
+ displayScale?: components["schemas"]["PivotItemsDisplayScale"] | null;
6208
+ filters: string[];
6209
+ measures: string[];
6210
+ measuresAxis?: components["schemas"]["PivotItemsMeasuresAxis"] | null;
6211
+ measuresPosition?: components["schemas"]["PivotItemsMeasuresPosition"] | null;
6212
+ rows: string[];
6213
+ showAppliedFilters?: boolean | null;
6214
+ showColumnTotals?: boolean | null;
6215
+ showRowTotals?: boolean | null;
5632
6216
  };
5633
6217
  /** @enum {string} */
5634
6218
  PivotItemsDisplayScale: "model" | "absolute" | "thousands" | "millions" | "billions";
@@ -5655,12 +6239,12 @@ export interface components {
5655
6239
  /** @enum {string} */
5656
6240
  PivotItemsMeasuresPosition: "before" | "after";
5657
6241
  Policy: {
5658
- actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
6242
+ actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
5659
6243
  resourceType: components["schemas"]["PolicyResourceType"];
5660
6244
  resources: string[];
5661
6245
  };
5662
6246
  /** @enum {string} */
5663
- PolicyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread";
6247
+ PolicyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread" | "ScheduledTask";
5664
6248
  PostTokenBySessionIdInput: {
5665
6249
  sessionId: string;
5666
6250
  };
@@ -5690,11 +6274,15 @@ export interface components {
5690
6274
  externalId: string;
5691
6275
  };
5692
6276
  ProvisionEmbedUserInput: {
6277
+ /** @description Email address, shown wherever the user is listed and searchable through `GET /embed-tenants/{embedTenantName}/users`. Must be a valid address, and is stored lowercased. Omit it and Cube derives a synthetic `{externalId}@cubecloud.dev` placeholder instead, which is what makes a user hard to recognise in a list. Supplying it again later updates the stored address. */
5693
6278
  email?: string | null;
5694
6279
  /** @description The id your own system knows this user by — the same `externalId` you will pass to `generate-session`. Trimmed and lowercased before it is stored, so casing never produces a second user. */
5695
6280
  externalId: string;
6281
+ /** @description Global, account-wide groups (the `groups` field of `generate-session`) that gate data-model access. They must already exist. Supplying the field REPLACES the user’s global groups; omit it to leave them untouched, pass `[]` to clear them. */
5696
6282
  groups?: string[] | null;
6283
+ /** @description Groups belonging to this embed tenant (the `tenantGroups` field of `generate-session`), which scope content sharing and organization within the tenant. Create them first via `POST /embed-tenants/{embedTenantName}/groups`. Supplying the field REPLACES the user’s tenant groups; omit it to leave them untouched, pass `[]` to clear them. */
5697
6284
  tenantGroups?: string[] | null;
6285
+ /** @description Display name and avatar. `displayName` is the name shown wherever the user appears, including on content they author. Omitted fields keep their current value. */
5698
6286
  userProfile?: components["schemas"]["EmbedUserProfile"] | null;
5699
6287
  };
5700
6288
  ProvisionEmbedUsersInput: {
@@ -5845,6 +6433,7 @@ export interface components {
5845
6433
  files: components["schemas"]["DataModelFilePath"][];
5846
6434
  };
5847
6435
  RemoveNotificationRecipientInput: {
6436
+ /** @description Embed tenant name (required for type=EMBED_USER; resolves the storage partition) */
5848
6437
  embedTenantName?: string | null;
5849
6438
  /** @description Recipient id: userId (type=USER), embedUserId (type=EMBED_USER), or channelId (type=SLACK) */
5850
6439
  id: number | string;
@@ -5864,6 +6453,7 @@ export interface components {
5864
6453
  ReplaceJsonConfigTextInput: {
5865
6454
  /** @description Replacements applied in order, each to the result of the previous one. Either all apply or nothing is saved. */
5866
6455
  edits: components["schemas"]["TextReplacementInput"][];
6456
+ /** @description The `hash` from your last read. When set, the request fails with 409 if the configuration changed since then. */
5867
6457
  expectedHash?: string | null;
5868
6458
  };
5869
6459
  Report: {
@@ -5911,8 +6501,11 @@ export interface components {
5911
6501
  placeholder?: boolean | null;
5912
6502
  };
5913
6503
  ReportDeliveryColumnInput: {
6504
+ /** @description Name of a column the report’s query returns: its alias in the SQL. Provide this OR `placeholder` (exactly one). */
5914
6505
  column?: string | null;
6506
+ /** @description Text of the header cell. Defaults to the column name; required for a placeholder, where it may be empty. */
5915
6507
  header?: string | null;
6508
+ /** @description `true` for an empty column that holds only its header. Provide this OR `column` (exactly one). */
5916
6509
  placeholder?: components["schemas"]["ReportDeliveryColumnInputPlaceholder"] | null;
5917
6510
  };
5918
6511
  /** @enum {boolean} */
@@ -5925,8 +6518,11 @@ export interface components {
5925
6518
  spreadsheetId: string;
5926
6519
  };
5927
6520
  ReportDeliveryDestinationInput: {
6521
+ /** @description Top-left cell of the delivered block, in A1 notation (e.g. `B3`). Defaults to `A1`. */
5928
6522
  anchorCell?: string | null;
6523
+ /** @description Id of the tab to write into (the `gid` in the spreadsheet URL). A tab is followed by its id through a rename. Provide this OR `sheetName`; neither when `writeMode` is `new_sheet`. */
5929
6524
  sheetId?: number | null;
6525
+ /** @description Title of the tab to write into. Provide this OR `sheetId`; neither when `writeMode` is `new_sheet`. */
5930
6526
  sheetName?: string | null;
5931
6527
  /** @description The Google Sheets spreadsheet: its URL or its id. */
5932
6528
  spreadsheet: string;
@@ -5934,6 +6530,7 @@ export interface components {
5934
6530
  ReportDeliveryNotificationSettings: {
5935
6531
  email: boolean;
5936
6532
  inbox: boolean;
6533
+ /** @description `null` when nothing is posted to Slack. */
5937
6534
  slackChannelId?: string | null;
5938
6535
  slackChannelName?: string | null;
5939
6536
  };
@@ -5942,36 +6539,54 @@ export interface components {
5942
6539
  email: boolean;
5943
6540
  /** @description Notify in the owner's Cube inbox. */
5944
6541
  inbox: boolean;
6542
+ /** @description Also post to this Slack channel, by id. Needs the Cube Slack app installed. */
5945
6543
  slackChannelId?: string | null;
6544
+ /** @description The channel's name, kept for display only. */
5946
6545
  slackChannelName?: string | null;
5947
6546
  };
5948
6547
  ReportDeliveryResponse: {
5949
6548
  deploymentId: number;
5950
6549
  destination: components["schemas"]["ReportDeliveryDestination"];
5951
6550
  id: number;
6551
+ /** @description When the last run finished. `null` before the first. */
5952
6552
  lastRunAt?: string | null;
6553
+ /** @description When the last successful run finished. `null` if none has succeeded. */
5953
6554
  lastSuccessAt?: string | null;
5954
6555
  name: string;
6556
+ /** @description When the schedule next fires. `null` when there is no schedule or it is paused. */
5955
6557
  nextRunAt?: any | null;
5956
6558
  /** @description How the owner hears that the delivery failed or recovered. A delivery that runs more than once a day reports only changes in its status; a daily or rarer one reports every failed run. */
5957
6559
  notifications: components["schemas"]["ReportDeliveryNotificationSettings"];
6560
+ /** @description The accountable user, whose Google account writes the sheet. `null` once that user has been deleted. */
5958
6561
  ownerUserId?: number | null;
6562
+ /** @description When the delivery was paused. `null` if it is not. */
5959
6563
  pausedAt?: any | null;
6564
+ /** @description The delivered report. `null` once that report has been deleted. */
5960
6565
  reportId?: number | null;
6566
+ /** @description Name of the delivered report. `null` once that report has been deleted. */
5961
6567
  reportName?: string | null;
6568
+ /** @description Public id of the delivered report. `null` once that report has been deleted. */
5962
6569
  reportPublicId?: string | null;
6570
+ /** @description Workbook holding the delivered report. `null` once that report has been deleted. */
5963
6571
  reportWorkbookId?: number | null;
6572
+ /** @description The user whose data access the query runs with. `null` once that user has been deleted. */
5964
6573
  runAsUserId?: number | null;
6574
+ /** @description When the run still in progress started. `null` while no run is going. */
5965
6575
  runningSince?: string | null;
6576
+ /** @description `null` for a delivery that runs only on request. */
5966
6577
  schedule?: components["schemas"]["ReportDeliverySchedule"] | null;
6578
+ /** @description `null` when every column is delivered as is. */
5967
6579
  shape?: components["schemas"]["ReportDeliveryShape"] | null;
6580
+ /** @description Current title of the destination tab, read from Google at most every few minutes. `null` for a `new_sheet` delivery, or before its title has been read. */
5968
6581
  sheetTitle?: string | null;
6582
+ /** @description Title of the destination spreadsheet, read from Google at most every few minutes and by each run. `null` before then. */
5969
6583
  spreadsheetTitle?: string | null;
5970
6584
  status: components["schemas"]["ReportDeliveryResponseStatus"];
6585
+ /** @description What each run does with what the previous one wrote. `overwrite` (the default) replaces the delivered block. `append` adds the whole result below it, header only on the first run and no deduplication. `new_sheet` writes each run to a new tab. */
5971
6586
  writeMode: components["schemas"]["ReportDeliveryResponseWriteMode"];
5972
6587
  };
5973
6588
  /** @enum {string} */
5974
- ReportDeliveryResponseStatus: "active" | "failing" | "needs_reconnect" | "orphaned";
6589
+ ReportDeliveryResponseStatus: "active" | "failing" | "needs_reconnect" | "no_sheet_access" | "orphaned";
5975
6590
  /** @enum {string} */
5976
6591
  ReportDeliveryResponseWriteMode: "overwrite" | "append" | "new_sheet";
5977
6592
  ReportDeliveryRunFailure: {
@@ -5981,14 +6596,19 @@ export interface components {
5981
6596
  text: string;
5982
6597
  };
5983
6598
  ReportDeliveryRunResponse: {
6599
+ /** @description Cells written, headers included. */
5984
6600
  cellsWritten?: number | null;
5985
6601
  deliveryId: number;
6602
+ /** @description `null` unless the run failed. */
5986
6603
  error?: components["schemas"]["ReportDeliveryRunFailure"] | null;
6604
+ /** @description `null` while the run is going. */
5987
6605
  finishedAt?: string | null;
5988
6606
  id: number;
6607
+ /** @description Result rows written, headers excluded. */
5989
6608
  rowsWritten?: number | null;
5990
6609
  /** Format: date-time */
5991
6610
  startedAt: string;
6611
+ /** @description `running` until the run finishes. */
5992
6612
  status: components["schemas"]["ReportDeliveryRunResponseStatus"];
5993
6613
  trigger: components["schemas"]["ReportDeliveryRunResponseTrigger"];
5994
6614
  };
@@ -6007,6 +6627,7 @@ export interface components {
6007
6627
  ReportDeliveryScheduleInput: {
6008
6628
  /** @description Five-field cron expressions; the delivery runs whenever any matches. Runs of one expression must be at least 15 minutes apart: `*\/15 9-17 * * 1-5` is every quarter hour from 09:00 to 17:45 on weekdays. */
6009
6629
  cronExpressions: string[];
6630
+ /** @description IANA timezone the cron expressions are read in, e.g. `America/New_York`. Fixed offsets such as `+02:00` are rejected. Defaults to `UTC`. */
6010
6631
  timezone?: string | null;
6011
6632
  };
6012
6633
  ReportDeliveryShape: {
@@ -6027,6 +6648,10 @@ export interface components {
6027
6648
  reportsCount?: number | null;
6028
6649
  };
6029
6650
  ReportFoldersFindAllResult: {
6651
+ /**
6652
+ * @deprecated
6653
+ * @description Deprecated: total number of accessible report folders, ignoring pagination. Kept for backward compatibility.
6654
+ */
6030
6655
  count?: number | null;
6031
6656
  /**
6032
6657
  * @deprecated
@@ -6069,11 +6694,13 @@ export interface components {
6069
6694
  ReportPlacementResultChunk: {
6070
6695
  from: number;
6071
6696
  hash: string;
6697
+ /** @deprecated */
6072
6698
  to?: number | null;
6073
6699
  };
6074
6700
  ReportPlacementResultChunkInput: {
6075
6701
  from: number;
6076
6702
  hash: string;
6703
+ /** @deprecated */
6077
6704
  to?: number | null;
6078
6705
  };
6079
6706
  /** @enum {string} */
@@ -6106,6 +6733,10 @@ export interface components {
6106
6733
  } | null;
6107
6734
  };
6108
6735
  ReportsListResponse: {
6736
+ /**
6737
+ * @deprecated
6738
+ * @description Deprecated: total number of accessible reports, ignoring pagination. Kept for backward compatibility.
6739
+ */
6109
6740
  count?: number | null;
6110
6741
  /**
6111
6742
  * @deprecated
@@ -6122,7 +6753,7 @@ export interface components {
6122
6753
  userCount?: number | null;
6123
6754
  };
6124
6755
  /** @enum {string} */
6125
- ResourceGroupPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6756
+ ResourceGroupPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6126
6757
  ResourceOwner: {
6127
6758
  email: string;
6128
6759
  firstName?: string | null;
@@ -6143,21 +6774,47 @@ export interface components {
6143
6774
  userId?: number | null;
6144
6775
  };
6145
6776
  /** @enum {string} */
6146
- ResourceUserPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6777
+ ResourceUserPolicyDtoAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6147
6778
  RevokeEmbedSessionInput: {
6148
6779
  /** @description The session id returned by `POST /api/v1/embed/generate-session`. Works whether or not the session has already been exchanged for a token. */
6149
6780
  sessionId: string;
6150
6781
  };
6782
+ Role: {
6783
+ description?: string | null;
6784
+ id: number;
6785
+ name: string;
6786
+ policies: components["schemas"]["Policy"][];
6787
+ };
6788
+ RoleCreateBody: {
6789
+ description?: string | null;
6790
+ /** @description Unique role name. Cannot be one of the built-in role names, which are rejected with `400`: `Admin`, `Developer`, `AIBIDeveloper`, `D3User`, `AIBIUser`, `AIBIViewer`, `Guest`, `EmbedUser`. (The console additionally refuses `None` and `All` in its own role builder; those are accepted here.) */
6791
+ name: string;
6792
+ /** @description What the role grants. Scope a policy to specific deployments by setting `resourceType` to `Deployment` and listing the deployment ids — as returned by POST /build/api/v1/deployments — in `resources`, or `["All"]` for every deployment. An empty `policies` list is accepted and creates a role that grants nothing yet; an individual policy with no actions, or none naming a resource, is rejected. */
6793
+ policies: components["schemas"]["Policy"][];
6794
+ };
6795
+ RoleUpdateBody: {
6796
+ /** @description Omit to leave the description unchanged; `null` clears it. */
6797
+ description?: string | null;
6798
+ /** @description Omit to leave the name unchanged. `null` is rejected. */
6799
+ name?: string;
6800
+ /** @description Replaces the role's policies outright when present — there is no per-policy merge. Omit it to leave them unchanged, or send `[]` to remove them all. `null` is rejected, so a partly-filled client object cannot strip a role's grants by accident. */
6801
+ policies?: components["schemas"]["Policy"][];
6802
+ };
6151
6803
  RoleWithAccess: {
6152
- actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
6804
+ actions: ("All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage")[];
6153
6805
  id: number;
6154
6806
  name: string;
6155
6807
  };
6808
+ RolesListResponse: {
6809
+ items: components["schemas"]["Role"][];
6810
+ pageInfo: components["schemas"]["PageInfo"];
6811
+ };
6156
6812
  RunScheduledTaskResponse: {
6157
6813
  /** @description The chat thread this run writes to. */
6158
6814
  chatThreadUuid: string;
6159
6815
  };
6160
6816
  SaveDatabricksMetricViewIntegrationInput: {
6817
+ /** @description Use retain. The delete-managed value is deprecated and currently retains obsolete Metric Views; it does not delete them. */
6161
6818
  deletionPolicy?: components["schemas"]["SaveDatabricksMetricViewIntegrationInputDeletionPolicy"];
6162
6819
  enabled: boolean;
6163
6820
  /** @description Use 0 to create; otherwise pass the configurationVersion returned by GET. */
@@ -6183,7 +6840,9 @@ export interface components {
6183
6840
  pageInfo: components["schemas"]["PageInfo"];
6184
6841
  };
6185
6842
  ScheduledTaskResponse: {
6843
+ /** @description The agent that runs the task; null runs the deployment default. */
6186
6844
  agentId?: number | null;
6845
+ /** @description Standard 5-field cron (minute hour day-of-month month day-of-week), e.g. `0 9 * * 1-5` for 9:00 on weekdays. Null when the task is Manual: it runs only when started with `POST /scheduled-tasks/{taskId}/run`. */
6187
6846
  cronExpression?: string | null;
6188
6847
  deploymentId: number;
6189
6848
  description?: string | null;
@@ -6191,6 +6850,7 @@ export interface components {
6191
6850
  /** @description False while the schedule is paused. */
6192
6851
  isEnabled: boolean;
6193
6852
  name: string;
6853
+ /** @description When the schedule next fires (ISO 8601, UTC); null for a Manual or paused task. */
6194
6854
  nextRunAt?: string | null;
6195
6855
  /** @description Whether a finished run notifies the creator in Cube's notification inbox. */
6196
6856
  notificationEnabled: boolean;
@@ -6205,6 +6865,7 @@ export interface components {
6205
6865
  /** @description The chat thread the run produced. */
6206
6866
  chatThreadUuid: string;
6207
6867
  createdAt: string;
6868
+ /** @description in-progress, completed, or failed when recorded. Treat unrecognized values as non-terminal. */
6208
6869
  status?: string | null;
6209
6870
  };
6210
6871
  ScheduledTaskRunsListResponse: {
@@ -6284,28 +6945,47 @@ export interface components {
6284
6945
  pageInfo?: components["schemas"]["PageInfo"] | null;
6285
6946
  };
6286
6947
  StartDashboardExportInput: {
6948
+ /** @description Numeric id of the dashboard to export. Provide either this or `dashboardPublicId`, not both. */
6287
6949
  dashboardId?: number | null;
6950
+ /** @description Public id of the dashboard to export. Provide either this or `dashboardId`, not both. */
6288
6951
  dashboardPublicId?: string | null;
6952
+ /** @description Dimension filters applied to the dashboard while it renders. Same shape the scheduled-notification API uses. */
6289
6953
  filters?: components["schemas"]["DashboardFilterInput"][] | null;
6954
+ /** @description Output format: `png` or `pdf`. */
6290
6955
  format: components["schemas"]["StartDashboardExportInputFormat"];
6956
+ /**
6957
+ * @description How the dashboard is laid out. `screenshot` (the default) renders the board as it looks on screen. `print` renders the paginated A4 document the dashboard's 'Print version' menu item produces: one column, every table row, and the filter state as a summary line instead of filter controls. `print` is available for `format: 'pdf'` only.
6958
+ * @default screenshot
6959
+ */
6960
+ layout?: components["schemas"]["StartDashboardExportInputLayout"] | null;
6961
+ /** @description Field-switcher selections applied to the dashboard while it renders. */
6291
6962
  memberSwitchers?: components["schemas"]["DashboardMemberSwitcherInput"][] | null;
6963
+ /** @description Render the dashboard as this user instead of the caller — the queries behind the image run under THEIR security context. Requires the caller to be a tenant admin. Omit to render as the API key's own user. */
6292
6964
  renderAs?: components["schemas"]["ExportSubjectInput"] | null;
6965
+ /** @description Time-grain overrides applied to the dashboard while it renders. */
6293
6966
  timeGrains?: components["schemas"]["DashboardTimeGrainInput"][] | null;
6294
6967
  };
6295
6968
  /** @enum {string} */
6296
6969
  StartDashboardExportInputFormat: "png" | "pdf";
6970
+ /** @enum {string} */
6971
+ StartDashboardExportInputLayout: "screenshot" | "print";
6297
6972
  StartDatabricksMetricViewSyncInput: {
6298
6973
  /** @description The configurationVersion returned by GET. A run is refused when settings changed after they were loaded, so a publish always uses the configuration the caller saw. */
6299
6974
  configurationVersion: number;
6975
+ /** @description Optional idempotency key. Repeating a start with the same key returns the original run instead of publishing twice; omit it and every call starts a new run. */
6300
6976
  idempotencyKey?: string | null;
6301
6977
  };
6302
6978
  StartDbtSyncInput: {
6303
6979
  branchName?: string | null;
6980
+ /** @description The contents of your dbt `target/manifest.json`, as JSON. Required when `source` is `manifest` and ignored otherwise. Produced by `dbt parse`, `dbt compile` or `dbt build`, so a CI job can POST the manifest it just validated and be sure Cube converts exactly that — no re-parse of a branch tip that may already have moved. */
6304
6981
  manifest?: {
6305
6982
  [key: string]: any;
6306
6983
  } | null;
6984
+ /** @description What to do with the generated cubes. `branch` (the default) commits them to a new Cube branch for review. `files` commits nothing and creates no branch — the files are returned from `GET /dbt-sync/{syncJobId}/generated-files` instead, so your own CI can commit them to your repository through its normal review. Independent of `source`. */
6307
6985
  output?: components["schemas"]["StartDbtSyncInputOutput"] | null;
6986
+ /** @description Git ref in the dbt repository to sync from — a branch or a tag, NOT a commit SHA. Overrides the branch saved on the deployment’s dbt git integration for this sync only, so CI can sync the ref under review (e.g. a pull request’s head branch) instead of the tracked branch. The generated Cube branch is named after it. */
6308
6987
  ref?: string | null;
6988
+ /** @description Where the dbt metadata comes from. `git` (the default) clones the deployment’s dbt repository and runs dbt to produce a manifest. `manifest` converts a manifest you supply in `manifest` below, so Cube never needs access to the dbt repository — and the sync takes seconds rather than minutes, because no sandbox is provisioned and no dbt command runs. */
6309
6989
  source?: components["schemas"]["StartDbtSyncInputSource"] | null;
6310
6990
  };
6311
6991
  /** @enum {string} */
@@ -6318,6 +6998,7 @@ export interface components {
6318
6998
  StartEvaluationInput: {
6319
6999
  agentName?: string | null;
6320
7000
  branchName: string;
7001
+ /** @description Path of one eval-question YAML file to run, relative to the agents directory. Omit to run the complete eval set. */
6321
7002
  questionFile?: string | null;
6322
7003
  };
6323
7004
  StartReportDeliveryRunResponse: {
@@ -6325,19 +7006,24 @@ export interface components {
6325
7006
  runId: number;
6326
7007
  };
6327
7008
  StartSnowflakeSemanticViewPullInput: {
7009
+ /** @description Cube branch to write. Defaults to the deployment's deploy branch. */
6328
7010
  branchName?: string | null;
6329
7011
  commitMessage?: string | null;
6330
7012
  dataSource?: string | null;
7013
+ /** @description Optional idempotency key. Repeating a pull with the same key and inputs returns the original sync. */
6331
7014
  idempotencyKey?: string | null;
6332
7015
  namePrefix?: string | null;
6333
7016
  outputPath: string;
6334
7017
  schema: string;
6335
7018
  titlePrefix?: string | null;
7019
+ /** @description Semantic view names or * patterns to pull. Omit to pull every view in the schema. */
6336
7020
  viewNames?: string[] | null;
6337
7021
  };
6338
7022
  StartSnowflakeSemanticViewSyncInput: {
7023
+ /** @description Cube branch to publish. Defaults to the deployment's deploy branch when omitted. */
6339
7024
  branchName?: string | null;
6340
7025
  dataSource?: string | null;
7026
+ /** @description Optional idempotency key. Repeating a start with the same key returns the original sync instead of pushing the views twice. */
6341
7027
  idempotencyKey?: string | null;
6342
7028
  prefix: string;
6343
7029
  schema: string;
@@ -6382,6 +7068,7 @@ export interface components {
6382
7068
  newText: string;
6383
7069
  /** @description Exact text to replace, copied from `content`, including whitespace. Must occur exactly once unless `replaceAll` is set. */
6384
7070
  oldText: string;
7071
+ /** @description Replace every occurrence of `oldText` instead of requiring one. */
6385
7072
  replaceAll?: boolean | null;
6386
7073
  };
6387
7074
  ThemeFont: {
@@ -6449,6 +7136,7 @@ export interface components {
6449
7136
  body: string;
6450
7137
  };
6451
7138
  UpdateEmbedGroupInput: {
7139
+ /** @description New description. Pass an empty string to clear it. Omit to leave it unchanged. */
6452
7140
  description?: string | null;
6453
7141
  };
6454
7142
  UpdateFolderInput: {
@@ -6459,15 +7147,21 @@ export interface components {
6459
7147
  customCron?: string | null;
6460
7148
  dayOfMonth?: number | null;
6461
7149
  dayOfWeek?: number | null;
7150
+ /** @description Dimension filters applied to the dashboard when the notification is rendered. Replaces the existing set when provided. */
6462
7151
  filters?: components["schemas"]["DashboardFilterInput"][] | null;
6463
7152
  hour?: number | null;
7153
+ /** @description Enable or disable the schedule */
6464
7154
  isEnabled?: boolean | null;
7155
+ /** @description Field-switcher selections applied to the dashboard when the notification is rendered. Replaces the existing set when provided. */
6465
7156
  memberSwitchers?: components["schemas"]["DashboardMemberSwitcherInput"][] | null;
6466
7157
  minute?: number | null;
7158
+ /** @description Include an AI-generated "what changed" summary in the notification body. Off by default. */
6467
7159
  notificationAiSummary?: boolean | null;
6468
7160
  notificationEnabled?: boolean | null;
6469
7161
  notificationFormat?: components["schemas"]["UpdateNotificationInputNotificationFormat"] | null;
7162
+ /** @description Type of schedule */
6470
7163
  scheduleType?: components["schemas"]["UpdateNotificationInputScheduleType"] | null;
7164
+ /** @description Time-grain overrides applied to the dashboard when the notification is rendered. Replaces the existing set when provided. */
6471
7165
  timeGrains?: components["schemas"]["DashboardTimeGrainInput"][] | null;
6472
7166
  timezone?: string | null;
6473
7167
  };
@@ -6505,13 +7199,20 @@ export interface components {
6505
7199
  widgetId: string;
6506
7200
  };
6507
7201
  UpdateReportDeliveryInput: {
7202
+ /** @description Replaces the whole destination. */
6508
7203
  destination?: components["schemas"]["ReportDeliveryDestinationInput"] | null;
6509
7204
  name?: string | null;
7205
+ /** @description Replaces the whole setting; null resets it to the inbox only. How the owner hears that the delivery failed or recovered. A delivery that runs more than once a day reports only changes in its status; a daily or rarer one reports every failed run. */
6510
7206
  notifications?: components["schemas"]["ReportDeliveryNotificationsInput"] | null;
7207
+ /** @description Transfer the delivery to this active user, who must be able to read its report. They become owner and run-as user. Admins only. */
6511
7208
  ownerUserId?: number | null;
7209
+ /** @description Deliver another report. The caller must be able to read it. */
6512
7210
  reportId?: number | null;
7211
+ /** @description Replaces the whole schedule. `null` removes it, so the delivery runs only on request. */
6513
7212
  schedule?: components["schemas"]["ReportDeliveryScheduleInput"] | null;
7213
+ /** @description Replaces the whole shape. `null` removes it, delivering every column. */
6514
7214
  shape?: components["schemas"]["ReportDeliveryShapeInput"] | null;
7215
+ /** @description What each run does with what the previous one wrote. `overwrite` (the default) replaces the delivered block. `append` adds the whole result below it, header only on the first run and no deduplication. `new_sheet` writes each run to a new tab. */
6515
7216
  writeMode?: components["schemas"]["UpdateReportDeliveryInputWriteMode"] | null;
6516
7217
  };
6517
7218
  /** @enum {string} */
@@ -6547,9 +7248,9 @@ export interface components {
6547
7248
  resourceType: components["schemas"]["UpdateResourceGroupPolicyBodyResourceType"];
6548
7249
  };
6549
7250
  /** @enum {string} */
6550
- UpdateResourceGroupPolicyBodyAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
7251
+ UpdateResourceGroupPolicyBodyAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6551
7252
  /** @enum {string} */
6552
- UpdateResourceGroupPolicyBodyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread";
7253
+ UpdateResourceGroupPolicyBodyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread" | "ScheduledTask";
6553
7254
  UpdateResourceUserPolicyBody: {
6554
7255
  action?: components["schemas"]["UpdateResourceUserPolicyBodyAction"] | null;
6555
7256
  resourceId: number;
@@ -6557,17 +7258,25 @@ export interface components {
6557
7258
  userId?: number | null;
6558
7259
  };
6559
7260
  /** @enum {string} */
6560
- UpdateResourceUserPolicyBodyAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
7261
+ UpdateResourceUserPolicyBodyAction: "All" | "DeploymentsManage" | "DeploymentCreate" | "DeploymentRead" | "DeploymentUpdate" | "DeploymentDelete" | "SecretsManage" | "DownloadData" | "PlaygroundRead" | "SchemaRead" | "SchemaUpdate" | "SchemaUpdateDevBranches" | "APMRead" | "ChatHistoryRead" | "PreAggregationRead" | "PreAggregationBuild" | "AlertsCreate" | "AlertsRead" | "AlertsUpdate" | "AlertsDelete" | "AuditLogManage" | "BillingRead" | "SqlRunnerRead" | "DataAssetsRead" | "DataAssetsManage" | "CubeNetworkConnect" | "ReportRead" | "ReportEdit" | "ReportManage" | "WorkbookManage" | "WorkbookRead" | "WorkbookEdit" | "ChatThreadRead" | "AgentManage" | "AgentRead" | "AgentSpaceManage" | "AgentAdmin" | "DeploymentAgentRead" | "ScheduledTasksCreate" | "ScheduledTaskRead" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
6561
7262
  /** @enum {string} */
6562
- UpdateResourceUserPolicyBodyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread";
7263
+ UpdateResourceUserPolicyBodyResourceType: "Global" | "Deployment" | "Report" | "ReportFolder" | "Agent" | "AgentSpace" | "Workbook" | "Dashboard" | "Folder" | "ChatThread" | "ScheduledTask";
6563
7264
  UpdateScheduledTaskInput: {
7265
+ /** @description The agent that runs the task. Omit to leave unchanged; null resets it to the deployment default. */
6564
7266
  agentId?: number | null;
7267
+ /** @description New standard 5-field cron, at most hourly (the minute field is a single number). Omit it to keep the current schedule; send null to make the task Manual. */
6565
7268
  cronExpression?: string | null;
7269
+ /** @description Omit to leave unchanged. Send null to clear the description. */
6566
7270
  description?: string | null;
7271
+ /** @description `false` pauses the schedule, `true` resumes it. Omit to leave unchanged. Explicit null answers `400`. */
6567
7272
  isEnabled?: boolean | null;
7273
+ /** @description Omit to leave unchanged. Explicit null answers `400`. */
6568
7274
  name?: string | null;
7275
+ /** @description Turn the inbox notification for finished runs on or off. Omit to leave unchanged. Explicit null answers `400`. */
6569
7276
  notificationEnabled?: boolean | null;
7277
+ /** @description New prompt, shown as the task's Instructions in Cube. Omit to leave unchanged. Explicit null answers `400`. */
6570
7278
  prompt?: string | null;
7279
+ /** @description New IANA time zone for the cron, e.g. `America/New_York`. Omit it to keep the current one. Explicit null answers `400`. */
6571
7280
  timezone?: string | null;
6572
7281
  };
6573
7282
  UpdateWorkbookInput: {
@@ -6591,6 +7300,7 @@ export interface components {
6591
7300
  apiUrl: string;
6592
7301
  /** @description Id of the Usage Analytics deployment the token was issued for. */
6593
7302
  deploymentId: number;
7303
+ /** @description When the token expires, as an ISO-8601 timestamp. Request a new token before this moment — issuing one is idempotent and cheap. */
6594
7304
  expiresAt?: string | null;
6595
7305
  /** @description A short-lived JWT for the Usage Analytics deployment, carrying this tenant’s security context. Send it as `Authorization: Bearer <token>` on requests to `apiUrl`. */
6596
7306
  token: string;
@@ -6618,6 +7328,7 @@ export interface components {
6618
7328
  title?: string | null;
6619
7329
  tosAccepted?: Record<string, never> | null;
6620
7330
  updatedAt?: (string) | null;
7331
+ /** @description The caller's effective resource policies: direct grants, organization-wide grants, and grants inherited from their groups. Only populated by `GET /api/v1/users/me`. */
6621
7332
  userPolicies?: components["schemas"]["Policy"][] | null;
6622
7333
  username: string;
6623
7334
  };
@@ -6742,6 +7453,10 @@ export interface components {
6742
7453
  UserSettingsInput: {
6743
7454
  alternatingRowColors?: boolean | null;
6744
7455
  defaultDeploymentId?: number | null;
7456
+ /**
7457
+ * @deprecated
7458
+ * @description Deprecated and ignored. The changelog now arrives in the notification inbox, which carries its own read state. Accepted for backward compatibility but never read or written.
7459
+ */
6745
7460
  lastSeenChangelogId?: number | null;
6746
7461
  locale?: string | null;
6747
7462
  sheets?: components["schemas"]["SheetsUserSettingsInput"] | null;
@@ -6874,6 +7589,10 @@ export interface components {
6874
7589
  pageInfo: components["schemas"]["PageInfo"];
6875
7590
  };
6876
7591
  WorkbooksListResponse: {
7592
+ /**
7593
+ * @deprecated
7594
+ * @description Deprecated: total number of accessible workbooks, ignoring pagination. Kept for backward compatibility.
7595
+ */
6877
7596
  count?: number | null;
6878
7597
  /**
6879
7598
  * @deprecated
@@ -7609,6 +8328,67 @@ export interface operations {
7609
8328
  };
7610
8329
  };
7611
8330
  };
8331
+ "ChatHistoryPublicController.listChatHistoryThreads": {
8332
+ parameters: {
8333
+ query?: {
8334
+ createdAfter?: string | null;
8335
+ createdBefore?: string | null;
8336
+ updatedAfter?: string | null;
8337
+ updatedBefore?: string | null;
8338
+ userId?: number[] | null;
8339
+ userEmail?: string[] | null;
8340
+ externalUserId?: string[] | null;
8341
+ userType?: components["schemas"]["ChatHistoryThreadsQueryUserType"] | null;
8342
+ source?: ("web" | "api" | "mcp" | "slack" | "scheduled")[] | null;
8343
+ initialContext?: ("chat" | "workbook" | "model" | "dashboard" | "external" | "mcp" | "ai-widget" | "onboarding" | "explore" | "connection_setup" | "slack_dm" | "published-dashboard" | "sheets")[] | null;
8344
+ agentId?: number[] | null;
8345
+ search?: string | null;
8346
+ sortBy?: components["schemas"]["ChatHistoryThreadsQuerySortBy"] | null;
8347
+ sortOrder?: components["schemas"]["ChatHistoryThreadsQuerySortOrder"] | null;
8348
+ includeTurns?: boolean | null;
8349
+ after?: string;
8350
+ first?: number;
8351
+ };
8352
+ header?: never;
8353
+ path: {
8354
+ deploymentId: number;
8355
+ };
8356
+ cookie?: never;
8357
+ };
8358
+ requestBody?: never;
8359
+ responses: {
8360
+ 200: {
8361
+ headers: {
8362
+ [name: string]: any;
8363
+ };
8364
+ content: {
8365
+ "application/json": components["schemas"]["ChatHistoryThreadListResponse"];
8366
+ };
8367
+ };
8368
+ };
8369
+ };
8370
+ "ChatHistoryPublicController.getChatHistoryThread": {
8371
+ parameters: {
8372
+ query?: never;
8373
+ header?: never;
8374
+ path: {
8375
+ deploymentId: number;
8376
+ chatId: string;
8377
+ };
8378
+ cookie?: never;
8379
+ };
8380
+ requestBody?: never;
8381
+ responses: {
8382
+ 200: {
8383
+ headers: {
8384
+ [name: string]: any;
8385
+ };
8386
+ content: {
8387
+ "application/json": components["schemas"]["ChatHistoryThread"];
8388
+ };
8389
+ };
8390
+ };
8391
+ };
7612
8392
  "DeploymentsPublicController.advanceCreationStep": {
7613
8393
  parameters: {
7614
8394
  query?: never;
@@ -8812,6 +9592,131 @@ export interface operations {
8812
9592
  };
8813
9593
  };
8814
9594
  };
9595
+ "OssieConversionPublicController.startConversion": {
9596
+ parameters: {
9597
+ query?: never;
9598
+ header?: never;
9599
+ path: {
9600
+ deploymentId: number;
9601
+ };
9602
+ cookie?: never;
9603
+ };
9604
+ /** @description OssieConversionInput */
9605
+ requestBody: {
9606
+ content: {
9607
+ "application/json": components["schemas"]["OssieConversionInput"];
9608
+ };
9609
+ };
9610
+ responses: {
9611
+ 202: {
9612
+ headers: {
9613
+ [name: string]: any;
9614
+ };
9615
+ content: {
9616
+ "application/json": components["schemas"]["OssieConversionStartResponse"];
9617
+ };
9618
+ };
9619
+ };
9620
+ };
9621
+ "OssieConversionPublicController.conversionStatus": {
9622
+ parameters: {
9623
+ query?: never;
9624
+ header?: never;
9625
+ path: {
9626
+ deploymentId: number;
9627
+ conversionId: string;
9628
+ };
9629
+ cookie?: never;
9630
+ };
9631
+ requestBody?: never;
9632
+ responses: {
9633
+ 200: {
9634
+ headers: {
9635
+ [name: string]: any;
9636
+ };
9637
+ content: {
9638
+ "application/json": components["schemas"]["OssieConversionStatusResponse"];
9639
+ };
9640
+ };
9641
+ };
9642
+ };
9643
+ "OssieConversionPublicController.cancelConversion": {
9644
+ parameters: {
9645
+ query?: never;
9646
+ header?: never;
9647
+ path: {
9648
+ deploymentId: number;
9649
+ conversionId: string;
9650
+ };
9651
+ cookie?: never;
9652
+ };
9653
+ requestBody?: never;
9654
+ responses: {
9655
+ /** @description Successful response */
9656
+ 200: {
9657
+ headers: {
9658
+ [name: string]: any;
9659
+ };
9660
+ content: {
9661
+ "application/json": any;
9662
+ };
9663
+ };
9664
+ /** @description Cancelled, or already finished. */
9665
+ 204: {
9666
+ headers: {
9667
+ [name: string]: any;
9668
+ };
9669
+ content?: never;
9670
+ };
9671
+ };
9672
+ };
9673
+ "OssieConversionPublicController.conversionFiles": {
9674
+ parameters: {
9675
+ query?: {
9676
+ after?: string | null;
9677
+ first?: number | null;
9678
+ };
9679
+ header?: never;
9680
+ path: {
9681
+ deploymentId: number;
9682
+ conversionId: string;
9683
+ };
9684
+ cookie?: never;
9685
+ };
9686
+ requestBody?: never;
9687
+ responses: {
9688
+ 200: {
9689
+ headers: {
9690
+ [name: string]: any;
9691
+ };
9692
+ content: {
9693
+ "application/json": components["schemas"]["OssieConversionFilesListResponse"];
9694
+ };
9695
+ };
9696
+ };
9697
+ };
9698
+ "OssieConversionPublicController.conversionResult": {
9699
+ parameters: {
9700
+ query?: never;
9701
+ header?: never;
9702
+ path: {
9703
+ deploymentId: number;
9704
+ conversionId: string;
9705
+ };
9706
+ cookie?: never;
9707
+ };
9708
+ requestBody?: never;
9709
+ responses: {
9710
+ 200: {
9711
+ headers: {
9712
+ [name: string]: any;
9713
+ };
9714
+ content: {
9715
+ "application/json": components["schemas"]["OssieConversionResultResponse"];
9716
+ };
9717
+ };
9718
+ };
9719
+ };
8815
9720
  "DeploymentsPublicController.pods": {
8816
9721
  parameters: {
8817
9722
  query?: {
@@ -11854,6 +12759,251 @@ export interface operations {
11854
12759
  };
11855
12760
  };
11856
12761
  };
12762
+ "RolesPublicController.getRoles": {
12763
+ parameters: {
12764
+ query?: {
12765
+ after?: string | null;
12766
+ first?: number | null;
12767
+ };
12768
+ header?: never;
12769
+ path?: never;
12770
+ cookie?: never;
12771
+ };
12772
+ requestBody?: never;
12773
+ responses: {
12774
+ 200: {
12775
+ headers: {
12776
+ [name: string]: any;
12777
+ };
12778
+ content: {
12779
+ "application/json": components["schemas"]["RolesListResponse"];
12780
+ };
12781
+ };
12782
+ };
12783
+ };
12784
+ "RolesPublicController.createRole": {
12785
+ parameters: {
12786
+ query?: never;
12787
+ header?: never;
12788
+ path?: never;
12789
+ cookie?: never;
12790
+ };
12791
+ /** @description RoleCreateBody */
12792
+ requestBody?: {
12793
+ content: {
12794
+ "application/json": components["schemas"]["RoleCreateBody"];
12795
+ };
12796
+ };
12797
+ responses: {
12798
+ 200: {
12799
+ headers: {
12800
+ [name: string]: any;
12801
+ };
12802
+ content: {
12803
+ "application/json": components["schemas"]["Role"];
12804
+ };
12805
+ };
12806
+ /** @description The name is one of the built-in role names, or a policy grants no action, names no resource, or scopes a `Deployment` to something that is not a deployment id. */
12807
+ 400: {
12808
+ headers: {
12809
+ [name: string]: any;
12810
+ };
12811
+ content?: never;
12812
+ };
12813
+ /** @description A role with that name already exists. */
12814
+ 409: {
12815
+ headers: {
12816
+ [name: string]: any;
12817
+ };
12818
+ content?: never;
12819
+ };
12820
+ };
12821
+ };
12822
+ "RolesPublicController.getRole": {
12823
+ parameters: {
12824
+ query?: never;
12825
+ header?: never;
12826
+ path: {
12827
+ roleId: number;
12828
+ };
12829
+ cookie?: never;
12830
+ };
12831
+ requestBody?: never;
12832
+ responses: {
12833
+ 200: {
12834
+ headers: {
12835
+ [name: string]: any;
12836
+ };
12837
+ content: {
12838
+ "application/json": components["schemas"]["Role"];
12839
+ };
12840
+ };
12841
+ /** @description No custom role has that id. */
12842
+ 404: {
12843
+ headers: {
12844
+ [name: string]: any;
12845
+ };
12846
+ content?: never;
12847
+ };
12848
+ };
12849
+ };
12850
+ "RolesPublicController.updateRole": {
12851
+ parameters: {
12852
+ query?: never;
12853
+ header?: never;
12854
+ path: {
12855
+ roleId: number;
12856
+ };
12857
+ cookie?: never;
12858
+ };
12859
+ /** @description RoleUpdateBody */
12860
+ requestBody?: {
12861
+ content: {
12862
+ "application/json": components["schemas"]["RoleUpdateBody"];
12863
+ };
12864
+ };
12865
+ responses: {
12866
+ 200: {
12867
+ headers: {
12868
+ [name: string]: any;
12869
+ };
12870
+ content: {
12871
+ "application/json": components["schemas"]["Role"];
12872
+ };
12873
+ };
12874
+ /** @description `name` or `policies` was `null`, the new name is one of the built-in role names, or a policy is not a valid one. */
12875
+ 400: {
12876
+ headers: {
12877
+ [name: string]: any;
12878
+ };
12879
+ content?: never;
12880
+ };
12881
+ /** @description No custom role has that id. */
12882
+ 404: {
12883
+ headers: {
12884
+ [name: string]: any;
12885
+ };
12886
+ content?: never;
12887
+ };
12888
+ /** @description A role with that name already exists. */
12889
+ 409: {
12890
+ headers: {
12891
+ [name: string]: any;
12892
+ };
12893
+ content?: never;
12894
+ };
12895
+ };
12896
+ };
12897
+ "RolesPublicController.deleteRole": {
12898
+ parameters: {
12899
+ query?: never;
12900
+ header?: never;
12901
+ path: {
12902
+ roleId: number;
12903
+ };
12904
+ cookie?: never;
12905
+ };
12906
+ requestBody?: never;
12907
+ responses: {
12908
+ /** @description Successful response */
12909
+ 200: {
12910
+ headers: {
12911
+ [name: string]: any;
12912
+ };
12913
+ content: {
12914
+ "application/json": any;
12915
+ };
12916
+ };
12917
+ /** @description Role deleted. */
12918
+ 204: {
12919
+ headers: {
12920
+ [name: string]: any;
12921
+ };
12922
+ content?: never;
12923
+ };
12924
+ /** @description No custom role has that id. */
12925
+ 404: {
12926
+ headers: {
12927
+ [name: string]: any;
12928
+ };
12929
+ content?: never;
12930
+ };
12931
+ };
12932
+ };
12933
+ "RolesPublicController.assignRoleToUser": {
12934
+ parameters: {
12935
+ query?: never;
12936
+ header?: never;
12937
+ path: {
12938
+ roleId: number;
12939
+ userId: number;
12940
+ };
12941
+ cookie?: never;
12942
+ };
12943
+ requestBody?: never;
12944
+ responses: {
12945
+ /** @description Successful response */
12946
+ 200: {
12947
+ headers: {
12948
+ [name: string]: any;
12949
+ };
12950
+ content: {
12951
+ "application/json": any;
12952
+ };
12953
+ };
12954
+ /** @description Role assigned, or already held. */
12955
+ 204: {
12956
+ headers: {
12957
+ [name: string]: any;
12958
+ };
12959
+ content?: never;
12960
+ };
12961
+ /** @description The user or the role is unknown. Cube's Admin role is not resolvable here, so its id answers `404` as well. */
12962
+ 404: {
12963
+ headers: {
12964
+ [name: string]: any;
12965
+ };
12966
+ content?: never;
12967
+ };
12968
+ };
12969
+ };
12970
+ "RolesPublicController.removeRoleFromUser": {
12971
+ parameters: {
12972
+ query?: never;
12973
+ header?: never;
12974
+ path: {
12975
+ roleId: number;
12976
+ userId: number;
12977
+ };
12978
+ cookie?: never;
12979
+ };
12980
+ requestBody?: never;
12981
+ responses: {
12982
+ /** @description Successful response */
12983
+ 200: {
12984
+ headers: {
12985
+ [name: string]: any;
12986
+ };
12987
+ content: {
12988
+ "application/json": any;
12989
+ };
12990
+ };
12991
+ /** @description Role removed, or was not held. */
12992
+ 204: {
12993
+ headers: {
12994
+ [name: string]: any;
12995
+ };
12996
+ content?: never;
12997
+ };
12998
+ /** @description The user is unknown. */
12999
+ 404: {
13000
+ headers: {
13001
+ [name: string]: any;
13002
+ };
13003
+ content?: never;
13004
+ };
13005
+ };
13006
+ };
11857
13007
  "OpenApiSpecPublicController.getSpec": {
11858
13008
  parameters: {
11859
13009
  query?: never;