@cube-dev/platform-client 0.12.0 → 0.13.0

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/CHANGELOG.md CHANGED
@@ -9,12 +9,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  <!-- Curate public-facing entries here before the next release. -->
11
11
 
12
+ ## [0.13.0] - 2026-09-22
13
+
14
+ ### Added
15
+
16
+ - New public REST endpoints for promoting a workbook across deployments (CUB-2563): `POST /api/v1/deployments/{deploymentId}/workbooks/{workbookId}/promotion-previews` (`WorkbookPromotionsPublicController.previewWorkbookPromotion`) validates the promotion and returns content hashes for optimistic concurrency, without storing anything; `POST .../promotions` (`.promoteWorkbook`) applies it atomically if the source hash still matches the preview, preserving the workbook's deployment-scoped slug across repeat promotions, and takes an idempotency key to make retries safe; `GET .../promotion` (`.getWorkbookPromotion`) returns the workbook's promotion provenance; `GET .../promotions` (`.getWorkbookPromotions`) lists its promotion history with cursor pagination; `GET .../promotion-links` (`.getWorkbookPromotionLinks`) lists its promotion destinations. Requires access to both deployments, and a workspace session or API key — not an embed session. New schemas: `WorkbookPromotionDto`, `WorkbookPromotionDtoOutcome`, `WorkbookPromotionPreviewDto`, `WorkbookPromotionSummaryResponse`, `WorkbookPromotionSummaryDto`, `WorkbookPromotionsListResponse`, `WorkbookPromotionLinkDto`, `WorkbookPromotionLinksListResponse`, `PromotionActorDto`, `PromotionActorDtoAuthenticationMethod`, `PromotionReferenceDto`, `PromotionReferenceDtoAvailability`, `PreviewWorkbookPromotionInput`, `ApplyWorkbookPromotionInput`.
17
+ - `Workbook` gained `promotion` (CUB-2563) — the workbook's promotion summary (`WorkbookPromotionSummaryDto`), `null` on a workbook that has never been promoted or received a promotion.
18
+ - New public REST endpoint `GET /api/v1/external-documents/{externalWorkbookId}/placements` (`ExternalDocumentsPublicController.listExternalDocumentPlacements`) (CUB-4418) lists every block of Cube-written cells in an external spreadsheet — a Google Drive file id, or the custom property the Excel add-in writes — across the whole tenant, including placements the caller cannot read: each entry carries `access: GRANTED | DENIED`, with `reportName` withheld (`null`) on a denied entry. Tenant-scoped, unlike `GET /api/v1/deployments/{deploymentId}/reports?externalWorkbookId=`, which lists only readable reports for one deployment. Supports cursor pagination (`first`/`after`); omitting `first` returns every placement in the document. Answers `422` rather than a truncated page if the document holds more than 500 placed explorations or 2000 total placements. New schema: `ExternalDocumentPlacementsListResponse` (`ExternalDocumentPlacementResponse`, `ExternalDocumentPlacementResponseAccess`, `ExternalDocumentPlacementResponseHost`).
19
+
20
+ ### Removed
21
+
22
+ - **BREAKING:** the deprecated agent Jira/Atlassian schema surface is deleted (CUB-4781), one release after `0.12.0` shipped it deprecated-but-present. Gone: `Agent.integrations` and `UpdateAgentInput.integrations` (with `AgentIntegrationsDto`, `AgentIntegrationsJiraDto`, `JiraSite`, `JiraProject`, `JiraIssueType` and their `*Input` counterparts), the `atlassianConfig` / `jiraProjects` / `jiraIssueTypes` queries, and the `useD3AiJiraIntegration` tenant flag. All of them answered null, empty or false for their whole deprecated life — nothing read or wrote them, because the OAuth callback, credential storage and token refresh behind them were removed in CUB-4773. A client that still **selects** one of these fields will now fail the whole GraphQL query rather than receive null, so remove them from your operations if you have not already. The same removal reaches this package's generated REST types: `AgentIntegrationsDto`, `AgentIntegrationsJiraDto`, `JiraSite`, `JiraProject` and `JiraIssueType` are gone from `schema.ts`, and `Agent.integrations` no longer exists on the `Agent` component — a TypeScript consumer that still references any of them fails to compile on upgrade, not just at runtime. Notably, none of this was ever marked `deprecated: true` in the public OpenAPI spec during `0.12.0`'s deprecation window, so a REST/SDK consumer had no machine-readable warning before this release removed it outright.
23
+ - `AgentsWithIntegrations` keeps its name despite no longer selecting any integrations. Renaming a published operation would break every caller on top of the field removal, for cosmetic gain; it is a plain agents query now.
24
+
12
25
  ## [0.12.0] - 2026-09-20
26
+
27
+ ### Added
28
+
29
+ - `AppConfigResponse` gained `dashboardAppsEnabled` — whether this tenant has Dashboard Apps, for a client with no other read path to tenant flags (the creator-mode embed, the Sheets add-in) to tell whether to render an `APP`-kind workbook as the app rather than the classic builder — and `restrictDataDownload` — the tenant-wide data-download lock, exposed here for the same reason: an embed has no other read path to it, and previously only the published-dashboard embed carried a copy on its own payload.
30
+ - `ReportSnapshot` gained `publicId` — the snapshotted report's public id, which is what a published Dashboard App resolves a report by (`useReportData('<publicId>')`); `null` on versions written before it was recorded.
31
+ - `TenantSettings` gained `aiTokensAutoPurchaseEnabled`, `aiTokensAutoPurchaseThreshold` and `aiTokensAutoPurchaseAmount` (CUB-4690) — automatic AI-token top-up; `TenantSettingsInput` gained only `aiTokensAutoPurchaseEnabled` and `aiTokensAutoPurchaseAmount`, since `Threshold` is staff-set per tenant and not customer-configurable through this endpoint. `Threshold`/`Amount` are dollar amounts and are only meaningful while `Enabled`; `Amount` is retained when it is switched off so re-enabling restores what the customer had.
32
+ - `PivotItems` / `PivotItemsInput` gained `showRowTotals` (CUB-4542) — whether a trailing "Total" column is appended, totaling each row across the pivot columns; the row-axis counterpart of the existing `showColumnTotals`. Ignored without a Columns zone, same as its sibling.
33
+
34
+ ### Changed
35
+
36
+ - `DatabricksMetricViewPublicationViewResult.outcome` gained `partial`, and the result gained a required `withheldMembers` — measures a view could not publish, each named with its cube. A `partial` view is queryable but incomplete; a consumer matching exhaustively on `outcome` must handle the new value.
37
+
13
38
  ### Deprecated
14
39
 
15
- - The agent Jira/Atlassian integration is gone (CUB-4773). `Agent.integrations` (`AgentIntegrationsDto`, `AgentIntegrationsJiraDto`), `UpdateAgentInput.integrations`, the `atlassianConfig` / `jiraProjects` / `jiraIssueTypes` queries and `useD3AiJiraIntegration` are **deprecated, not removed** — they remain in the schema returning null/false so existing clients keep working, and are deleted in a later release (CUB-4781). Nothing reads or writes them: the OAuth callback, credential storage and token refresh behind them are gone.
40
+ - The agent Jira/Atlassian integration no longer does anything (CUB-4773). `Agent.integrations` (`AgentIntegrationsDto`, `AgentIntegrationsJiraDto`), `UpdateAgentInput.integrations`, the `atlassianConfig` / `jiraProjects` / `jiraIssueTypes` queries and `useD3AiJiraIntegration` are **deprecated, not removed** — they remain in the schema returning null/false so existing clients keep working, and are deleted in a later release (CUB-4781). Nothing reads or writes them: the OAuth callback, credential storage and token refresh behind them are gone.
16
41
 
17
42
  ## [0.11.0] - 2026-09-15
43
+
18
44
  ### Added
19
45
 
20
46
  - `FolderDto` gained `user` (CUB-4611) — the folder's owner, resolved the same way workbook owners are; `null` on a folder shared from the main workspace, which stays masked. Fixes the embed workspace's Owner column always rendering a dash, including for a folder the caller just created.
@@ -22,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
22
48
  - New public REST endpoint `POST /api/v1/embed/session/revoke` (`EmbedPublicController.revokeSession`) (CUB-4508) ends a signed embed session from the server side — call it from your application's logout handler with the `sessionId` that `POST /api/v1/embed/generate-session` returned. Works on either state a session can be in: an unexchanged id can no longer be redeemed via `POST /api/v1/embed/session/token`, and a token an already-exchanged id produced is rejected with `401` from that point on. Idempotent — revoking an unknown, expired, or already-revoked id also responds `204`, so the response alone never tells you whether a token was still revocable. That depends on Cube, not on the client library you call from: only tokens Cube issued after this endpoint shipped carry the revocation claim, and an older token keeps working until it expires on its own, within 24 hours. Requires admin access and that embedding be enabled for the account. New schema: `RevokeEmbedSessionInput`.
23
49
 
24
50
  ## [0.10.0] - 2026-09-14
51
+
25
52
  ### Added
26
53
 
27
54
  - `GET /api/v1/deployments/{deploymentId}/dbt-sync/{syncJobId}/generated-files` (`DbtSyncPublicController.getDbtSyncGeneratedFiles`) returns the cube files a dbt sync generated when it did not commit them, with cursor pagination (CUB-4489). The files are held for one hour after the sync completes and then dropped, so collect them promptly; a sync that committed to a branch instead, or a stale/unknown job, gets a 404. Requires deployment read access. New schemas: `DbtSyncGeneratedFilesListResponse`, `DbtGeneratedFileContent`.
package/dist/schema.d.ts CHANGED
@@ -1389,6 +1389,81 @@ export interface paths {
1389
1389
  patch?: never;
1390
1390
  trace?: never;
1391
1391
  };
1392
+ "/api/v1/deployments/{deploymentId}/workbooks/{workbookId}/promotion": {
1393
+ parameters: {
1394
+ query?: never;
1395
+ header?: never;
1396
+ path?: never;
1397
+ cookie?: never;
1398
+ };
1399
+ /** Get workbook promotion provenance */
1400
+ get: operations["WorkbookPromotionsPublicController.getWorkbookPromotion"];
1401
+ put?: never;
1402
+ post?: never;
1403
+ delete?: never;
1404
+ options?: never;
1405
+ head?: never;
1406
+ patch?: never;
1407
+ trace?: never;
1408
+ };
1409
+ "/api/v1/deployments/{deploymentId}/workbooks/{workbookId}/promotion-links": {
1410
+ parameters: {
1411
+ query?: never;
1412
+ header?: never;
1413
+ path?: never;
1414
+ cookie?: never;
1415
+ };
1416
+ /** List workbook promotion destinations */
1417
+ get: operations["WorkbookPromotionsPublicController.getWorkbookPromotionLinks"];
1418
+ put?: never;
1419
+ post?: never;
1420
+ delete?: never;
1421
+ options?: never;
1422
+ head?: never;
1423
+ patch?: never;
1424
+ trace?: never;
1425
+ };
1426
+ "/api/v1/deployments/{deploymentId}/workbooks/{workbookId}/promotion-previews": {
1427
+ parameters: {
1428
+ query?: never;
1429
+ header?: never;
1430
+ path?: never;
1431
+ cookie?: never;
1432
+ };
1433
+ get?: never;
1434
+ put?: never;
1435
+ /**
1436
+ * Preview a workbook promotion
1437
+ * @description Validate promotion of the complete workbook and published dashboard to another deployment. The source slug is preserved so deployment-scoped dashboard links remain stable. Returns content hashes for optimistic concurrency; no preview is stored. Requires access to both deployments.
1438
+ */
1439
+ post: operations["WorkbookPromotionsPublicController.previewWorkbookPromotion"];
1440
+ delete?: never;
1441
+ options?: never;
1442
+ head?: never;
1443
+ patch?: never;
1444
+ trace?: never;
1445
+ };
1446
+ "/api/v1/deployments/{deploymentId}/workbooks/{workbookId}/promotions": {
1447
+ parameters: {
1448
+ query?: never;
1449
+ header?: never;
1450
+ path?: never;
1451
+ cookie?: never;
1452
+ };
1453
+ /** List workbook promotion history */
1454
+ get: operations["WorkbookPromotionsPublicController.getWorkbookPromotions"];
1455
+ put?: never;
1456
+ /**
1457
+ * Promote and publish a workbook
1458
+ * @description Promote the current workbook atomically if its source hash still matches the preview. Repeated promotions update the linked copy, including its deployment-scoped slug. Override replaces destination edits, never source validation or permissions. An idempotency key makes retries safe.
1459
+ */
1460
+ post: operations["WorkbookPromotionsPublicController.promoteWorkbook"];
1461
+ delete?: never;
1462
+ options?: never;
1463
+ head?: never;
1464
+ patch?: never;
1465
+ trace?: never;
1466
+ };
1392
1467
  "/api/v1/deployments/{deploymentId}/workbooks/{workbookId}/publish": {
1393
1468
  parameters: {
1394
1469
  query?: never;
@@ -1977,6 +2052,34 @@ export interface paths {
1977
2052
  patch?: never;
1978
2053
  trace?: never;
1979
2054
  };
2055
+ "/api/v1/external-documents/{externalWorkbookId}/placements": {
2056
+ parameters: {
2057
+ query?: never;
2058
+ header?: never;
2059
+ path?: never;
2060
+ cookie?: never;
2061
+ };
2062
+ /**
2063
+ * List the Cube placements in an external spreadsheet
2064
+ * @description Every block of Cube-written cells in the external document `externalWorkbookId` — a Google Drive file id, or the custom property the Excel add-in writes — across the whole tenant.
2065
+ *
2066
+ * Unlike `GET /api/v1/deployments/{deploymentId}/reports?externalWorkbookId=`, which lists only the reports the caller can read, this endpoint also reports the placements they **cannot**: each entry carries `access`, which is `GRANTED` when the caller may open the exploration and `DENIED` when they may not. It is how a recipient of a shared workbook learns that a block they are looking at is backed by an exploration nobody has shared with them, and who to ask.
2067
+ *
2068
+ * A `DENIED` entry carries only the placement's address, its opaque `reportId`/`placementId` and the exploration's `owner`. `reportName` is `null` on a denied entry — the name is withheld along with the exploration — and reading the report itself still answers `403`.
2069
+ *
2070
+ * Results are returned in pages using cursor-based pagination: pass `first` to set the page size and `after` (the previous response's `pageInfo.endCursor`) to fetch the next page. Omitting `first` returns every placement in the document.
2071
+ *
2072
+ * A document holding more than 500 placed explorations, or more than 2000 placements in total, is answered with `422` rather than a truncated page — an inventory that looks complete but is not would hide the very placement a recipient needs to see.
2073
+ */
2074
+ get: operations["ExternalDocumentsPublicController.listExternalDocumentPlacements"];
2075
+ put?: never;
2076
+ post?: never;
2077
+ delete?: never;
2078
+ options?: never;
2079
+ head?: never;
2080
+ patch?: never;
2081
+ trace?: never;
2082
+ };
1980
2083
  "/api/v1/github/installations": {
1981
2084
  parameters: {
1982
2085
  query?: never;
@@ -3091,19 +3194,10 @@ export interface components {
3091
3194
  embeddingLlm?: components["schemas"]["AgentLlm"] | null;
3092
3195
  embeddingUrl?: string | null;
3093
3196
  id: number;
3094
- integrations?: components["schemas"]["AgentIntegrationsDto"] | null;
3095
3197
  name?: string | null;
3096
3198
  updatedAt: string;
3097
3199
  userId?: number | null;
3098
3200
  };
3099
- AgentIntegrationsDto: {
3100
- jira?: components["schemas"]["AgentIntegrationsJiraDto"] | null;
3101
- };
3102
- AgentIntegrationsJiraDto: {
3103
- connected?: boolean | null;
3104
- jiraIssueType?: components["schemas"]["JiraIssueType"] | null;
3105
- jiraProject?: components["schemas"]["JiraProject"] | null;
3106
- };
3107
3201
  AgentLlm: {
3108
3202
  config?: {
3109
3203
  [key: string]: any;
@@ -3230,6 +3324,15 @@ export interface components {
3230
3324
  fonts: components["schemas"]["ThemeFont"][];
3231
3325
  heading: components["schemas"]["AppThemeFontRef"];
3232
3326
  };
3327
+ ApplyWorkbookPromotionInput: {
3328
+ expectedDestinationHash?: string | null;
3329
+ expectedSourceHash: string;
3330
+ /** Format: uuid */
3331
+ idempotencyKey: string;
3332
+ override?: boolean | null;
3333
+ targetDeploymentId: number;
3334
+ targetFolderId?: number | null;
3335
+ };
3233
3336
  BranchResponse: {
3234
3337
  id: number;
3235
3338
  isStagingEnvironmentEnabled?: boolean | null;
@@ -4546,6 +4649,30 @@ export interface components {
4546
4649
  };
4547
4650
  /** @enum {string} */
4548
4651
  ExportSubjectInputType: "USER" | "EMBED_USER";
4652
+ ExternalDocumentPlacementResponse: {
4653
+ access: components["schemas"]["ExternalDocumentPlacementResponseAccess"];
4654
+ anchorCell?: string | null;
4655
+ deploymentId: number;
4656
+ endResultCell?: string | null;
4657
+ host?: components["schemas"]["ExternalDocumentPlacementResponseHost"] | null;
4658
+ owner?: components["schemas"]["ResourceOwner"] | null;
4659
+ placedAt?: string | null;
4660
+ placementId?: string | null;
4661
+ refreshedAt?: string | null;
4662
+ reportId: number;
4663
+ reportName?: string | null;
4664
+ resultLocation: string;
4665
+ sheetId?: string | null;
4666
+ sheetName?: string | null;
4667
+ };
4668
+ /** @enum {string} */
4669
+ ExternalDocumentPlacementResponseAccess: "GRANTED" | "DENIED";
4670
+ /** @enum {string} */
4671
+ ExternalDocumentPlacementResponseHost: "GOOGLE_SHEETS" | "EXCEL";
4672
+ ExternalDocumentPlacementsListResponse: {
4673
+ items: components["schemas"]["ExternalDocumentPlacementResponse"][];
4674
+ pageInfo?: components["schemas"]["PageInfo"] | null;
4675
+ };
4549
4676
  FileHash: {
4550
4677
  hash: string;
4551
4678
  };
@@ -4704,22 +4831,6 @@ export interface components {
4704
4831
  };
4705
4832
  /** @enum {string} */
4706
4833
  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" | "OAuthIntegrationsManage" | "OAuthIntegrationsIssueTokens" | "McpToolsManage" | "AIBIDevelop" | "AIBIExplore" | "AIBIView" | "ChartPalettesManage" | "DashboardThemesManage" | "AIBIDeveloper" | "AIBIUser" | "AIBIViewer" | "EmbedDeploymentRead" | "EmbedDashboardRead" | "FolderRead" | "FolderEdit" | "FolderManage";
4707
- JiraIssueType: {
4708
- description?: string | null;
4709
- iconUrl?: string | null;
4710
- id: string;
4711
- name: string;
4712
- };
4713
- JiraProject: {
4714
- id: string;
4715
- key: string;
4716
- name: string;
4717
- site: components["schemas"]["JiraSite"];
4718
- };
4719
- JiraSite: {
4720
- host: string;
4721
- id: string;
4722
- };
4723
4834
  /** @enum {string} */
4724
4835
  ListDatabricksMetricViewSyncsQueryStatus: "QUEUED" | "RUNNING" | "CANCELLING" | "COMPLETED" | "PARTIAL" | "FAILED" | "CANCELLED";
4725
4836
  LocalEncryptedSecret: {
@@ -4914,6 +5025,26 @@ export interface components {
4914
5025
  PostTokenBySessionIdInput: {
4915
5026
  sessionId: string;
4916
5027
  };
5028
+ PreviewWorkbookPromotionInput: {
5029
+ targetDeploymentId: number;
5030
+ targetFolderId?: number | null;
5031
+ };
5032
+ PromotionActorDto: {
5033
+ apiKeyId?: number | null;
5034
+ authenticationMethod: components["schemas"]["PromotionActorDtoAuthenticationMethod"];
5035
+ displayName: string;
5036
+ userId: number;
5037
+ };
5038
+ /** @enum {string} */
5039
+ PromotionActorDtoAuthenticationMethod: "session" | "apiKey";
5040
+ PromotionReferenceDto: {
5041
+ availability: components["schemas"]["PromotionReferenceDtoAvailability"];
5042
+ deploymentId?: number | null;
5043
+ name?: string | null;
5044
+ workbookId?: number | null;
5045
+ };
5046
+ /** @enum {string} */
5047
+ PromotionReferenceDtoAvailability: "available" | "unavailable";
4917
5048
  ProvisionEmbedUserFailure: {
4918
5049
  error: components["schemas"]["BulkActionError"];
4919
5050
  /** @description The `externalId` of the entry that failed, normalized the same way a successful one is. */
@@ -5788,6 +5919,7 @@ export interface components {
5788
5919
  [key: string]: any;
5789
5920
  };
5790
5921
  name: string;
5922
+ promotion?: components["schemas"]["WorkbookPromotionSummaryDto"] | null;
5791
5923
  publishedDashboard?: components["schemas"]["Dashboard"] | null;
5792
5924
  slug?: string | null;
5793
5925
  type: components["schemas"]["WorkbookDtoType"];
@@ -5804,6 +5936,51 @@ export interface components {
5804
5936
  };
5805
5937
  /** @enum {string} */
5806
5938
  WorkbookDtoType: "FOLDER" | "WORKBOOK" | "REPORT";
5939
+ WorkbookPromotionDto: {
5940
+ completedAt: string;
5941
+ destinationChangedSincePreview: boolean;
5942
+ destinationWasDiverged: boolean;
5943
+ id: number;
5944
+ linkId: number;
5945
+ outcome: components["schemas"]["WorkbookPromotionDtoOutcome"];
5946
+ overrideRequested: boolean;
5947
+ performedBy: components["schemas"]["PromotionActorDto"];
5948
+ source?: components["schemas"]["PromotionReferenceDto"] | null;
5949
+ target?: components["schemas"]["PromotionReferenceDto"] | null;
5950
+ targetDashboardVersionId: number;
5951
+ };
5952
+ /** @enum {string} */
5953
+ WorkbookPromotionDtoOutcome: "created" | "updated" | "unchanged";
5954
+ WorkbookPromotionLinkDto: {
5955
+ id: number;
5956
+ target: components["schemas"]["PromotionReferenceDto"];
5957
+ };
5958
+ WorkbookPromotionLinksListResponse: {
5959
+ items: components["schemas"]["WorkbookPromotionLinkDto"][];
5960
+ pageInfo: components["schemas"]["PageInfo"];
5961
+ };
5962
+ WorkbookPromotionPreviewDto: {
5963
+ destinationHash?: string | null;
5964
+ destinationWasDiverged: boolean;
5965
+ reportCount: number;
5966
+ sourceHash: string;
5967
+ targetDeploymentId: number;
5968
+ targetWorkbookId?: number | null;
5969
+ };
5970
+ WorkbookPromotionSummaryDto: {
5971
+ firstPromotion?: components["schemas"]["WorkbookPromotionDto"] | null;
5972
+ lastPromotion?: components["schemas"]["WorkbookPromotionDto"] | null;
5973
+ linkId: number;
5974
+ origin: components["schemas"]["PromotionReferenceDto"];
5975
+ parent: components["schemas"]["PromotionReferenceDto"];
5976
+ };
5977
+ WorkbookPromotionSummaryResponse: {
5978
+ promotion?: components["schemas"]["WorkbookPromotionSummaryDto"] | null;
5979
+ };
5980
+ WorkbookPromotionsListResponse: {
5981
+ items: components["schemas"]["WorkbookPromotionDto"][];
5982
+ pageInfo: components["schemas"]["PageInfo"];
5983
+ };
5807
5984
  WorkbooksListResponse: {
5808
5985
  count?: number | null;
5809
5986
  /**
@@ -8222,6 +8399,132 @@ export interface operations {
8222
8399
  };
8223
8400
  };
8224
8401
  };
8402
+ "WorkbookPromotionsPublicController.getWorkbookPromotion": {
8403
+ parameters: {
8404
+ query?: never;
8405
+ header?: never;
8406
+ path: {
8407
+ deploymentId: number;
8408
+ workbookId: number;
8409
+ };
8410
+ cookie?: never;
8411
+ };
8412
+ requestBody?: never;
8413
+ responses: {
8414
+ 200: {
8415
+ headers: {
8416
+ [name: string]: any;
8417
+ };
8418
+ content: {
8419
+ "application/json": components["schemas"]["WorkbookPromotionSummaryResponse"];
8420
+ };
8421
+ };
8422
+ };
8423
+ };
8424
+ "WorkbookPromotionsPublicController.getWorkbookPromotionLinks": {
8425
+ parameters: {
8426
+ query?: {
8427
+ after?: string | null;
8428
+ first?: number | null;
8429
+ };
8430
+ header?: never;
8431
+ path: {
8432
+ deploymentId: number;
8433
+ workbookId: number;
8434
+ };
8435
+ cookie?: never;
8436
+ };
8437
+ requestBody?: never;
8438
+ responses: {
8439
+ 200: {
8440
+ headers: {
8441
+ [name: string]: any;
8442
+ };
8443
+ content: {
8444
+ "application/json": components["schemas"]["WorkbookPromotionLinksListResponse"];
8445
+ };
8446
+ };
8447
+ };
8448
+ };
8449
+ "WorkbookPromotionsPublicController.previewWorkbookPromotion": {
8450
+ parameters: {
8451
+ query?: never;
8452
+ header?: never;
8453
+ path: {
8454
+ deploymentId: number;
8455
+ workbookId: number;
8456
+ };
8457
+ cookie?: never;
8458
+ };
8459
+ /** @description PreviewWorkbookPromotionInput */
8460
+ requestBody?: {
8461
+ content: {
8462
+ "application/json": components["schemas"]["PreviewWorkbookPromotionInput"];
8463
+ };
8464
+ };
8465
+ responses: {
8466
+ 200: {
8467
+ headers: {
8468
+ [name: string]: any;
8469
+ };
8470
+ content: {
8471
+ "application/json": components["schemas"]["WorkbookPromotionPreviewDto"];
8472
+ };
8473
+ };
8474
+ };
8475
+ };
8476
+ "WorkbookPromotionsPublicController.getWorkbookPromotions": {
8477
+ parameters: {
8478
+ query?: {
8479
+ after?: string | null;
8480
+ first?: number | null;
8481
+ };
8482
+ header?: never;
8483
+ path: {
8484
+ deploymentId: number;
8485
+ workbookId: number;
8486
+ };
8487
+ cookie?: never;
8488
+ };
8489
+ requestBody?: never;
8490
+ responses: {
8491
+ 200: {
8492
+ headers: {
8493
+ [name: string]: any;
8494
+ };
8495
+ content: {
8496
+ "application/json": components["schemas"]["WorkbookPromotionsListResponse"];
8497
+ };
8498
+ };
8499
+ };
8500
+ };
8501
+ "WorkbookPromotionsPublicController.promoteWorkbook": {
8502
+ parameters: {
8503
+ query?: never;
8504
+ header?: never;
8505
+ path: {
8506
+ deploymentId: number;
8507
+ workbookId: number;
8508
+ };
8509
+ cookie?: never;
8510
+ };
8511
+ /** @description ApplyWorkbookPromotionInput */
8512
+ requestBody?: {
8513
+ content: {
8514
+ "application/json": components["schemas"]["ApplyWorkbookPromotionInput"];
8515
+ };
8516
+ };
8517
+ responses: {
8518
+ 200: {
8519
+ headers: {
8520
+ [name: string]: any;
8521
+ };
8522
+ content: {
8523
+ "application/json": components["schemas"]["WorkbookPromotionDto"];
8524
+ };
8525
+ };
8526
+ };
8527
+ };
8225
8528
  "WorkbooksPublicController.publishDashboard": {
8226
8529
  parameters: {
8227
8530
  query?: never;
@@ -9026,6 +9329,37 @@ export interface operations {
9026
9329
  };
9027
9330
  };
9028
9331
  };
9332
+ "ExternalDocumentsPublicController.listExternalDocumentPlacements": {
9333
+ parameters: {
9334
+ query?: {
9335
+ after?: string | null;
9336
+ first?: number | null;
9337
+ };
9338
+ header?: never;
9339
+ path: {
9340
+ externalWorkbookId: string;
9341
+ };
9342
+ cookie?: never;
9343
+ };
9344
+ requestBody?: never;
9345
+ responses: {
9346
+ 200: {
9347
+ headers: {
9348
+ [name: string]: any;
9349
+ };
9350
+ content: {
9351
+ "application/json": components["schemas"]["ExternalDocumentPlacementsListResponse"];
9352
+ };
9353
+ };
9354
+ /** @description The document holds more placements than this endpoint will report on. A state, not a malformed request: the answer is deliberately an error rather than a page that silently omits placements no cursor can reach. */
9355
+ 422: {
9356
+ headers: {
9357
+ [name: string]: any;
9358
+ };
9359
+ content?: never;
9360
+ };
9361
+ };
9362
+ };
9029
9363
  "GitHubPublicController.installations": {
9030
9364
  parameters: {
9031
9365
  query?: {