@fusebase/fusebase-gate-sdk 2.5.1-sdk.3 → 2.6.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/apis/AppMagicLinksApi.d.ts +1 -1
- package/dist/apis/AppMagicLinksApi.js +1 -1
- package/dist/apis/IsolatedStoresApi.d.ts +1 -1
- package/dist/apis/IsolatedStoresApi.js +1 -1
- package/dist/apis/PortalsApi.d.ts +532 -10
- package/dist/apis/PortalsApi.js +590 -9
- package/dist/types/app-magic-link/app-magic-link.d.ts +17 -5
- package/dist/types/portals/portals.d.ts +1269 -48
- package/dist/types/portals/portals.js +65 -1
- package/package.json +1 -1
- package/release-notes/2.5.4.md +947 -0
- package/release-notes/2.6.1.md +9 -0
- package/release-notes/latest.md +3 -3
- package/release-notes/2.5.1-sdk.3.md +0 -9
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Domain: portals
|
|
6
6
|
*/
|
|
7
7
|
import type { Client } from "../runtime/transport";
|
|
8
|
-
import type { AddPortalAiAgentBlockRequestContract, AddPortalAiAgentBlockResponseContract, AddPortalAppBlockRequestContract, AddPortalAppBlockResponseContract, AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlankNoteBlockRequestContract, AddPortalBlankNoteBlockResponseContract,
|
|
8
|
+
import type { AddPortalAiAgentBlockRequestContract, AddPortalAiAgentBlockResponseContract, AddPortalAppBlockRequestContract, AddPortalAppBlockResponseContract, AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlankNoteBlockRequestContract, AddPortalBlankNoteBlockResponseContract, AddPortalBpmnDiagramBlockRequestContract, AddPortalBpmnDiagramBlockResponseContract, AddPortalCardBlockRequestContract, AddPortalCardBlockResponseContract, AddPortalCardGroupBlockRequestContract, AddPortalCardGroupBlockResponseContract, AddPortalCarouselBlockRequestContract, AddPortalCarouselBlockResponseContract, AddPortalChatBlockRequestContract, AddPortalChatBlockResponseContract, AddPortalChatsDashboardMenuItemRequestContract, AddPortalChatsDashboardMenuItemResponseContract, AddPortalCountdownBlockRequestContract, AddPortalCountdownBlockResponseContract, AddPortalCustomWidgetBlockRequestContract, AddPortalCustomWidgetBlockResponseContract, AddPortalDatabaseBlockRequestContract, AddPortalDatabaseBlockResponseContract, AddPortalDynamicTableBlockRequestContract, AddPortalDynamicTableBlockResponseContract, AddPortalEmbedBlockRequestContract, AddPortalEmbedBlockResponseContract, AddPortalFilesDashboardMenuItemRequestContract, AddPortalFilesDashboardMenuItemResponseContract, AddPortalFileUploaderBlockRequestContract, AddPortalFileUploaderBlockResponseContract, AddPortalFormBlockRequestContract, AddPortalFormBlockResponseContract, AddPortalHeadingBlockRequestContract, AddPortalHtmlCssBlockRequestContract, AddPortalHtmlCssBlockResponseContract, AddPortalImageBlockRequestContract, AddPortalInfoBlockRequestContract, AddPortalInfoBlockResponseContract, AddPortalInternalSpacePageRequestContract, AddPortalInternalSpacePageResponseContract, AddPortalKanbanBlockRequestContract, AddPortalKanbanBlockResponseContract, AddPortalLinkedBlockRequestContract, AddPortalLinkedBlockResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, AddPortalRecentFilesBlockRequestContract, AddPortalRecentFilesBlockResponseContract, AddPortalTaskListBlockRequestContract, AddPortalTaskListBlockResponseContract, AddPortalTasksDashboardMenuItemRequestContract, AddPortalTasksDashboardMenuItemResponseContract, AddPortalTextBlockRequestContract, AddPortalTimelineBlockRequestContract, AddPortalTimelineBlockResponseContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalLinkRequestContract, CreatePortalLinkResponseContract, CreatePortalPageRequestContract, CreatePortalPageResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DeletePortalItemResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, GetPortalBlockResponseContract, GetPortalPageBlockCountResponseContract, globalIdInPathRequired, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalAiAgentsResponseContract, ListPortalChatChannelsResponseContract, ListPortalChatUsersResponseContract, ListPortalContentResponseContract, ListPortalDatabaseBlockSourcesResponseContract, ListPortalLinkableBlocksResponseContract, ListPortalPageBlocksResponseContract, MovePortalBlockRequestContract, orgIdInPathRequired, OrgPortalListResponseContract, PortalDetailContract, PortalTextAndMediaBlockResponseContract, PublishPortalDraftResponseContract, SearchPortalInfoBlockIconsResponseContract, SetDashboardViewReadonlyRequestContract, SetDashboardViewReadonlyResponseContract, StagedPortalBlockResponseContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalAiAgentBlockRequestContract, UpdatePortalAppBlockRequestContract, UpdatePortalBpmnDiagramBlockRequestContract, UpdatePortalCardBlockRequestContract, UpdatePortalCardGroupBlockRequestContract, UpdatePortalCarouselBlockRequestContract, UpdatePortalChatBlockRequestContract, UpdatePortalContentPermissionsRequestContract, UpdatePortalContentPermissionsResponseContract, UpdatePortalCountdownBlockRequestContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract, UpdatePortalCustomWidgetBlockRequestContract, UpdatePortalDatabaseBlockRequestContract, UpdatePortalDynamicTableBlockRequestContract, UpdatePortalEmbedBlockRequestContract, UpdatePortalFileUploaderBlockRequestContract, UpdatePortalFormBlockRequestContract, UpdatePortalHomepageRequestContract, UpdatePortalHomepageResponseContract, UpdatePortalHtmlCssBlockRequestContract, UpdatePortalImageBlockRequestContract, UpdatePortalInfoBlockRequestContract, UpdatePortalItemRequestContract, UpdatePortalItemResponseContract, UpdatePortalLinkedBlockRequestContract, UpdatePortalNoteBlockRequestContract, UpdatePortalRecentFilesBlockRequestContract, UpdatePortalStyleRequestContract, UpdatePortalStyleResponseContract, UpdatePortalTextBlockRequestContract, UpdatePortalTimelineBlockRequestContract } from "../types";
|
|
9
9
|
export declare class PortalsApi {
|
|
10
10
|
private client;
|
|
11
11
|
constructor(client: Client);
|
|
@@ -37,7 +37,7 @@ export declare class PortalsApi {
|
|
|
37
37
|
}): Promise<AddPortalAppBlockResponseContract>;
|
|
38
38
|
/**
|
|
39
39
|
* Add a published app as a portal page (embed)
|
|
40
|
-
* Creates a new sidebar page in the portal that embeds a published Fusebase app (a flexible block with an app-feature brick). Pass productId (the product that owns the app) and appId (the app to embed) — typically the app you just built and published via the CLI. For a managed product (Customizer "Managed Products") also pass productType='managed' and productOrgId from findPublishedApps. The app's URL is resolved by the portal at render time from these ids; nothing is hard-coded. Pass parentId to nest the page under an existing folder. The page is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it. Returns the page/menu-item/block ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
40
|
+
* Creates a new sidebar page in the portal that embeds a published Fusebase app (a flexible block with an app-feature brick). Pass productId (the product that owns the app) and appId (the app to embed) — typically the app you just built and published via the CLI. For a managed product (Customizer "Managed Products") also pass productType='managed' and productOrgId from findPublishedApps. The app's URL is resolved by the portal at render time from these ids; nothing is hard-coded. Pass parentId to nest the page under an existing folder, or positionType ('sidebar' default, 'top', 'footer') to place a root page in a specific menu bar. The page is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it. Returns the page/menu-item/block ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
41
41
|
*/
|
|
42
42
|
addPortalAppPage(params: {
|
|
43
43
|
path: {
|
|
@@ -61,17 +61,18 @@ export declare class PortalsApi {
|
|
|
61
61
|
body?: AddPortalBlankNoteBlockRequestContract;
|
|
62
62
|
}): Promise<AddPortalBlankNoteBlockResponseContract>;
|
|
63
63
|
/**
|
|
64
|
-
* Add a
|
|
65
|
-
* Stages
|
|
64
|
+
* Add a BPMN Diagram block to a portal page
|
|
65
|
+
* Stages one Customizer-compatible BPMN Diagram block on an EXISTING portal page — the programmatic equivalent of the customizer's Experimental "BPMN Diagram" tile. It creates exactly one flexible block with a single BPMN diagram brick; no page, sidebar item or menu icon change comes with it. The diagram is created EMPTY, exactly as the Customizer creates it: the process itself is drawn or imported from a `.bpmn` file in Portal Customizer. BPMN XML, `.bpmn` file uploads, task ids, persisted data/details and links for BPMN Task elements are rejected. This is not a Mermaid diagram, a generic flowchart, a Timeline or an image. The body may be empty, which reproduces the Customizer default: the title "BPMN Diagram", a 500px canvas, a blank backdrop with the title shown, width 6 and automatic height. `title` is the block title (plain text, only the `{{ClientName}}` and `{{ClientLastName}}` variables). `content.diagramHeight` is the BPMN canvas height in pixels (integer 150-5000, default 500) and is distinct from the block Layout height. `appearance` sets Customizer Backdrop `none`, `blank` or `custom`; a custom backdrop takes a background, padding (default `s`) and `showTitle` (default true). `layout` sets Width (2-6, default 6) and Height (Auto by default, a manual value is at least 50px). The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
66
66
|
*/
|
|
67
|
-
|
|
67
|
+
addPortalBpmnDiagramBlock(params: {
|
|
68
68
|
path: {
|
|
69
69
|
orgId: orgIdInPathRequired;
|
|
70
70
|
portalId: globalIdInPathRequired;
|
|
71
|
+
pageId: globalIdInPathRequired;
|
|
71
72
|
};
|
|
72
73
|
headers?: Record<string, string>;
|
|
73
|
-
body:
|
|
74
|
-
}): Promise<
|
|
74
|
+
body: AddPortalBpmnDiagramBlockRequestContract;
|
|
75
|
+
}): Promise<AddPortalBpmnDiagramBlockResponseContract>;
|
|
75
76
|
/**
|
|
76
77
|
* Add a Card block to a portal page
|
|
77
78
|
* Stages one Customizer-compatible Card on an EXISTING portal page — the programmatic equivalent of the customizer's Content display "Card" tile. It creates exactly one flexible block with the five canonical bricks (Image, Heading, Description, Button, Destination URL); no page, sidebar item or media asset is created. `view` is the Card Type: `top-image`, `left-image`, `right-image` or `fill-image` (default `top-image`; `fill-image` defaults the text to white). `content` configures the bricks: `image.visible` only — the Card always uses the built-in template image and an `src`/URL/asset id/upload is rejected —, `heading` and `description` (plain text plus one palette colour token such as `cyan-700`, size `s`/`m`/`l`/`xl`, a unique set of `bold`/`italic`/`underline`/`lineThrough` styles and alignment), `button` (plain label sent as `button.text` — there is no `label` field and sending one is rejected — with no dynamic variables) and `destination`. `visible` defaults to `true`, so a visible item does NOT need `visible: true`: send `content.button: {text: "Open"}` to set an enabled Button label. Any of Image, Heading, Description and Button can be hidden with `visible: false`, which then must be the item's only field. `destination` is shared by the whole Card and its Button: an exact `pageId` of a page in THIS portal, an absolute https URL, an email address, or `null` for no link — a raw DynamicLink, `javascript:`/`data:` URL or caller-supplied internal title/targetId is rejected, and the link target (new tab) is not configurable. `appearance` is optional; omitting it keeps the Card's canonical bare wrapper, and a `custom` backdrop takes a colour, gradient or one of the five preset background images (`azure`, `mira`, `solis`, `serenity`, `glow`). `layout` sets Customizer Width (2-6, default 3) and Height (Auto by default, a manual value is at least 50px). HTML, Markdown, CSS, Tailwind classes, a wrapper title and raw bricks are not accepted. The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
@@ -124,6 +125,18 @@ export declare class PortalsApi {
|
|
|
124
125
|
headers?: Record<string, string>;
|
|
125
126
|
body: AddPortalChatBlockRequestContract;
|
|
126
127
|
}): Promise<AddPortalChatBlockResponseContract>;
|
|
128
|
+
/**
|
|
129
|
+
* Add a Chat dashboard navigation item
|
|
130
|
+
* Adds a root navigation item pointing at the portal's system Chat dashboard page (`/chats-dashboard`), staged in the customizer draft. The page and its canonical `chats-dashboard` block are created with the portal, so this operation never creates them: if the portal has no such page the request returns 409 and stages nothing. This is the Customizer's Dashboards > Chat dashboard action, not an ordinary block — the item is always a ROOT item, so the operation takes no `pageId` and no `parentId`. Use addPortalChatBlock instead for a channel or direct-message widget on an existing page. Duplicates are allowed, as in the Customizer: any bar may carry several items, and every one of them points at the same dashboard. The body may be empty, which uses the default title "Chat Dashboard"; `title` is plain text of at most 100 characters and names the navigation item only — the page title, icon and route are managed by the service. `positionType` ('sidebar' default, 'top' or 'footer') picks the root menu bar. Requires portals.write access.
|
|
131
|
+
*/
|
|
132
|
+
addPortalChatsDashboardMenuItem(params: {
|
|
133
|
+
path: {
|
|
134
|
+
orgId: orgIdInPathRequired;
|
|
135
|
+
portalId: globalIdInPathRequired;
|
|
136
|
+
};
|
|
137
|
+
headers?: Record<string, string>;
|
|
138
|
+
body?: AddPortalChatsDashboardMenuItemRequestContract;
|
|
139
|
+
}): Promise<AddPortalChatsDashboardMenuItemResponseContract>;
|
|
127
140
|
/**
|
|
128
141
|
* Add a Countdown block to a portal page
|
|
129
142
|
* Stages one Customizer-compatible Countdown on an EXISTING portal page — the programmatic equivalent of the customizer's Content display "Countdown" tile. It creates exactly one flexible block with a single Countdown item that ticks down days, hours, minutes and seconds to a future moment; no page, sidebar item or external entity is created. The body may be empty, which reproduces the Customizer default: the title "Countdown" and a target 30 days after creation. `content.targetAt` is an absolute RFC 3339 date-time with `Z` or an explicit UTC offset — epoch seconds/milliseconds, a timezone-less local date and a duration are rejected, as are a raw timestamp, brick, renderer style, the item's internal title and its fixed days/hours/min/sec labels. The target must not be in the past or more than 99 days after creation. `title` is the block title (plain text, only the `{{ClientName}}` and `{{ClientLastName}}` variables). `appearance` sets Customizer Backdrop `none`, `blank` or `custom`; omitting it keeps the canonical blank backdrop with the title shown, and a custom backdrop takes a background, padding (default `s`) and `showTitle` (default true). `layout` sets Width (2-6, default 6) and Height (Auto by default, a manual value is at least 50px). The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
@@ -163,6 +176,19 @@ export declare class PortalsApi {
|
|
|
163
176
|
headers?: Record<string, string>;
|
|
164
177
|
body: AddPortalDatabaseBlockRequestContract;
|
|
165
178
|
}): Promise<AddPortalDatabaseBlockResponseContract>;
|
|
179
|
+
/**
|
|
180
|
+
* Add a Dynamic Table block to a portal page
|
|
181
|
+
* Stages one Customizer-compatible Dynamic Table block on an EXISTING portal page — the programmatic equivalent of the customizer's Dynamic "Table" tile. It creates exactly one flexible block with a single integration brick; no page, sidebar item or OAuth connection is created. This is NOT addPortalDatabaseBlock: Database shows a Fusebase Database table/view, while Dynamic Table reads records from a HubSpot, Asana or monday.com connection. The block is created UNCONFIGURED, exactly as the Customizer creates it before a Data source is picked: the response carries `configured: false` and the Data source, table fields, filters, sorting and pagination are still chosen in Portal Customizer. `tokenId`, provider source ids, mappings, filters, order, pagination, template and bricks are rejected. The body may be empty, which reproduces the Customizer default: the title "Dynamic Table", a blank backdrop with the title shown, width 6 and automatic height. `title` is the block title (plain text, only the `{{ClientName}}` and `{{ClientLastName}}` variables). `appearance` sets Customizer Backdrop `none`, `blank` or `custom`; a custom backdrop takes a background, padding (default `s`) and `showTitle` (default true). `layout` sets Width (2-6, default 6) and Height (Auto by default, a manual value is at least 50px). The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
182
|
+
*/
|
|
183
|
+
addPortalDynamicTableBlock(params: {
|
|
184
|
+
path: {
|
|
185
|
+
orgId: orgIdInPathRequired;
|
|
186
|
+
portalId: globalIdInPathRequired;
|
|
187
|
+
pageId: globalIdInPathRequired;
|
|
188
|
+
};
|
|
189
|
+
headers?: Record<string, string>;
|
|
190
|
+
body: AddPortalDynamicTableBlockRequestContract;
|
|
191
|
+
}): Promise<AddPortalDynamicTableBlockResponseContract>;
|
|
166
192
|
/**
|
|
167
193
|
* Add an Embeds & Integrations block to a portal page
|
|
168
194
|
* Stages one Customizer-compatible Embed block on an EXISTING portal page — the programmatic equivalent of the customizer's "Embeds & Integrations" action. No new page and no sidebar menu item is created. embedType is one of the 11 chooser variants (custom, youtube, google-drive, ms-doc, calendly, hubspot, airtable, loom, data-studio, figma, miro). For `custom` pass `content` (URL or embed code) and NOT `url`; for every named variant pass `url` and NOT `content` — the service builds the canonical iframe. hubspot here is an iframe Embed block, not a Flexible Block integration brick. For a published page resolve pageId from listPortalContent; for a page created earlier in the active draft use the pageId that operation returned. The block is staged in the portal's customizer draft (not published immediately). Returns the block id and the draft branch/seqs. Requires portals.write access.
|
|
@@ -176,6 +202,18 @@ export declare class PortalsApi {
|
|
|
176
202
|
headers?: Record<string, string>;
|
|
177
203
|
body: AddPortalEmbedBlockRequestContract;
|
|
178
204
|
}): Promise<AddPortalEmbedBlockResponseContract>;
|
|
205
|
+
/**
|
|
206
|
+
* Add a Files dashboard navigation item
|
|
207
|
+
* Adds a root navigation item pointing at the portal's system Files dashboard, staged in the customizer draft. If the portal has no `/files-dashboard` page yet, the page and its canonical `files-dashboard` block are created in the same batch; if it already has one, only the item is added, so several bars can link to the same dashboard. The dashboard renders the portal's full File Manager, so it cannot be placed on a page of your choice — the operation takes no `pageId` and no `parentId`. Use addPortalRecentFilesBlock or addPortalFileUploaderBlock instead for a file list or an upload area on an existing page. Pass `positionType` to choose the bar: 'sidebar' (default), 'top' (topbar) or 'footer'. The body may be empty, which uses the default title "Files"; `title` is plain text of at most 100 characters and names the navigation item (and the dashboard block when it is created) — the page title, route and icon are managed by the service. Requires portals.write access.
|
|
208
|
+
*/
|
|
209
|
+
addPortalFilesDashboardMenuItem(params: {
|
|
210
|
+
path: {
|
|
211
|
+
orgId: orgIdInPathRequired;
|
|
212
|
+
portalId: globalIdInPathRequired;
|
|
213
|
+
};
|
|
214
|
+
headers?: Record<string, string>;
|
|
215
|
+
body?: AddPortalFilesDashboardMenuItemRequestContract;
|
|
216
|
+
}): Promise<AddPortalFilesDashboardMenuItemResponseContract>;
|
|
179
217
|
/**
|
|
180
218
|
* Add a File uploader block to a portal page
|
|
181
219
|
* Stages one Customizer-compatible File uploader on an EXISTING portal page — the programmatic equivalent of the customizer's File management "File uploader" tile. It creates an EMPTY upload area (internally a `files-bucket` block) that non-visitor portal users can upload files to and manage; no page, sidebar item, bucket or file is created and nothing is uploaded. The body may be empty, which reproduces the Customizer default: the title "File uploader", no description and both file columns hidden. `title` is plain text and `description` is a plain-text hint of at most 50 characters. `showAuthor` and `showUploadDate` add the matching file-list columns; neither changes who may upload — that stays a function of the viewer's portal role. `layout` sets Width (3, 4 or 6, default 3) and Height (Auto by default, a manual value is at least 50px). The screen has no Appearance section, so `appearance`, `rowspan`, upload permissions, bucket/file ids and query/sort/limit are not accepted. The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
@@ -254,6 +292,18 @@ export declare class PortalsApi {
|
|
|
254
292
|
headers?: Record<string, string>;
|
|
255
293
|
body: AddPortalInfoBlockRequestContract;
|
|
256
294
|
}): Promise<AddPortalInfoBlockResponseContract>;
|
|
295
|
+
/**
|
|
296
|
+
* Add an existing Internal Space page to a portal
|
|
297
|
+
* Adds an EXISTING Internal Space page (Fusebase note) to the portal as its own page — the 'Internal Space Content' tile of the customizer. Identify the note with either noteId (its global id) or noteUrl (the browser URL, e.g. https://acme.nimbusweb.me/space/<workspaceId>/page/<noteId>); exactly one is required. The note must already exist in the portal's workspace — use createPortalPageWithNote to create a NEW note instead, or addPortalNoteBlock to embed a note as one more block on an existing page. The page (page node + note menu item + content block) is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it — the note is shared into the portal at publish time. `title` names the page and its menu item; the block header always shows the note's own title, because publishing backfills it from the note's share. Everything defaults to the note's title when `title` is omitted. Pass parentId to nest the page under an existing folder, or positionType ('sidebar' default, 'top', 'footer') to place a root page in a specific menu bar. Returns the note/page/menu-item/block ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
298
|
+
*/
|
|
299
|
+
addPortalInternalSpacePage(params: {
|
|
300
|
+
path: {
|
|
301
|
+
orgId: orgIdInPathRequired;
|
|
302
|
+
portalId: globalIdInPathRequired;
|
|
303
|
+
};
|
|
304
|
+
headers?: Record<string, string>;
|
|
305
|
+
body: AddPortalInternalSpacePageRequestContract;
|
|
306
|
+
}): Promise<AddPortalInternalSpacePageResponseContract>;
|
|
257
307
|
/**
|
|
258
308
|
* Add a Kanban board as a block to a portal page
|
|
259
309
|
* Creates a new Fusebase note, shares it into the portal, initialises a Kanban board inside it and adds the note as a block to an existing portal page — the programmatic equivalent of the customizer's Project management "Kanban" tile. No new page and no sidebar menu item is created. For a published page resolve pageId from listPortalContent; for a page created earlier in the active draft use the pageId that operation returned. Optional body: title (block, note and board title, non-empty and at most 100 characters, default "Kanban") and columns (1-10 column titles in order, each at most 100 characters, default "To do", "In progress", "Done"). The board starts empty — tasks are added by portal users, not by this operation. Use addPortalBlankNoteBlock when an empty note is wanted instead. The block is appended after the last block of the page body and is staged in the portal's customizer draft (not published immediately). Returns the note/board/block ids and the draft branch/seqs. Requires portals.write access.
|
|
@@ -292,6 +342,19 @@ export declare class PortalsApi {
|
|
|
292
342
|
headers?: Record<string, string>;
|
|
293
343
|
body: AddPortalNoteBlockRequestContract;
|
|
294
344
|
}): Promise<AddPortalNoteBlockResponseContract>;
|
|
345
|
+
/**
|
|
346
|
+
* Add a Recent files block to a portal page
|
|
347
|
+
* Stages one Customizer-compatible Recent files block on an EXISTING portal page — the programmatic equivalent of the customizer's File management "Recent files" tile. The block lists the five most recently created files of the whole portal or of exactly one portal page; no page, sidebar item, file or bucket is created and no file access is widened (the File Manager applies the viewer's own access at render time). The body may be empty, which reproduces the Customizer default: the title "Recent files" scoped to the entire portal. `title` is at most 100 characters. `source` is either `{type:'entirePortal'}` or `{type:'portalPage', pageId}` with an exact page id of THIS portal — a page title, path, URL, file or bucket id is rejected. `layout` sets Width (3-6, default 3) and Height (Auto by default, a manual value is at least 50px). Sort order (createdAt descending), the item count of 5, the offset, raw query/link data, Appearance and Rows are fixed and not configurable. The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
348
|
+
*/
|
|
349
|
+
addPortalRecentFilesBlock(params: {
|
|
350
|
+
path: {
|
|
351
|
+
orgId: orgIdInPathRequired;
|
|
352
|
+
portalId: globalIdInPathRequired;
|
|
353
|
+
pageId: globalIdInPathRequired;
|
|
354
|
+
};
|
|
355
|
+
headers?: Record<string, string>;
|
|
356
|
+
body: AddPortalRecentFilesBlockRequestContract;
|
|
357
|
+
}): Promise<AddPortalRecentFilesBlockResponseContract>;
|
|
295
358
|
/**
|
|
296
359
|
* Add a task list as a block to a portal page
|
|
297
360
|
* Creates a new Fusebase note, shares it into the portal, initialises a task list inside it and adds the note as a block to an existing portal page — the programmatic equivalent of the customizer's Project management "Task list" tile. No new page and no sidebar menu item is created. For a published page resolve pageId from listPortalContent; for a page created earlier in the active draft use the pageId that operation returned. Optional body: title (block and task list title, at most 100 characters, default "Task list") and layout (colspan 3-6, default 6; height in pixels or null for Auto, default null). The list starts empty — tasks are added by portal users, not by this operation, and an existing task list cannot be attached. Use addPortalBlankNoteBlock when an empty note is wanted instead. The block is appended after the last block of the page body and is staged in the portal's customizer draft (not published immediately). Returns the note/task list/block ids and the draft branch/seqs. Requires portals.write access.
|
|
@@ -305,6 +368,18 @@ export declare class PortalsApi {
|
|
|
305
368
|
headers?: Record<string, string>;
|
|
306
369
|
body?: AddPortalTaskListBlockRequestContract;
|
|
307
370
|
}): Promise<AddPortalTaskListBlockResponseContract>;
|
|
371
|
+
/**
|
|
372
|
+
* Add a Tasks dashboard navigation item
|
|
373
|
+
* Adds a root navigation item pointing at the portal's system Tasks dashboard, staged in the customizer draft. If the portal has no `/tasks-dashboard` page yet, the page and its canonical `tasks-dashboard` block are created in the same batch; if it already has one, only the item is added, so several bars can link to the same dashboard. The dashboard shows each viewer the portal tasks they are allowed to see, so it cannot be placed on a page of your choice — the operation takes no `pageId` and no `parentId`. Use addPortalTaskListBlock or addPortalKanbanBlock instead for a task list or board on an existing page. Pass `positionType` to choose the bar: 'sidebar' (default), 'top' (topbar) or 'footer'. The body may be empty, which uses the default title "Task Dashboard"; `title` is plain text of at most 100 characters and names the navigation item (and the dashboard block when it is created) — the page title, route and icon are managed by the service. Requires portals.write access.
|
|
374
|
+
*/
|
|
375
|
+
addPortalTasksDashboardMenuItem(params: {
|
|
376
|
+
path: {
|
|
377
|
+
orgId: orgIdInPathRequired;
|
|
378
|
+
portalId: globalIdInPathRequired;
|
|
379
|
+
};
|
|
380
|
+
headers?: Record<string, string>;
|
|
381
|
+
body?: AddPortalTasksDashboardMenuItemRequestContract;
|
|
382
|
+
}): Promise<AddPortalTasksDashboardMenuItemResponseContract>;
|
|
308
383
|
/**
|
|
309
384
|
* Add a Text & Media Simple text block to a portal page
|
|
310
385
|
* Stages one Customizer-compatible Simple text block on an existing portal page — the programmatic equivalent of the customizer's Text & Media "Simple text" tile. `content` carries the text settings (plain text, one palette colour token such as `cyan-700` — never HEX or CSS —, size `s`/`m`/`l`/`xl`, a unique set of `bold`, `italic`, `underline`, `lineThrough` styles and alignment). `appearance` is the Customizer Appearance section; a `custom` backdrop takes a colour, gradient or one of the five preset background images (`azure`, `mira`, `solis`, `serenity`, `glow`) — an image URL, asset id or upload is rejected. HTML, Markdown, CSS, Tailwind classes, a wrapper title and raw bricks are not accepted. Defaults: text "Your journey starts here! Add your unique message to engage your audience.", size `m`, no styles, left alignment and a blank backdrop. It creates exactly one flexible block on an EXISTING page; no page, sidebar item or media asset is created. `layout` sets Customizer Width (2-6, default 6) and Height (Auto by default, a manual value is at least 50px); `rowspan`, row placement and responsive values are not part of this contract. The block is staged in the portal's customizer draft (not published immediately). Requires portals.write access.
|
|
@@ -356,7 +431,7 @@ export declare class PortalsApi {
|
|
|
356
431
|
}): Promise<CreatePortalResponseContract>;
|
|
357
432
|
/**
|
|
358
433
|
* Create a root folder in a portal
|
|
359
|
-
* Creates a new empty root folder (a portalSection) in the
|
|
434
|
+
* Creates a new empty root folder (a portalSection) in a portal menu bar. Pass positionType to choose the bar: 'sidebar' (default), 'top' (topbar), or 'footer'. The folder is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending folder, and publishes it. Returns the created folder/page ids, its url, and the draft branch/seqs. Requires portals.write access.
|
|
360
435
|
*/
|
|
361
436
|
createPortalFolder(params: {
|
|
362
437
|
path: {
|
|
@@ -366,9 +441,21 @@ export declare class PortalsApi {
|
|
|
366
441
|
headers?: Record<string, string>;
|
|
367
442
|
body: CreatePortalFolderRequestContract;
|
|
368
443
|
}): Promise<CreatePortalFolderResponseContract>;
|
|
444
|
+
/**
|
|
445
|
+
* Create an external link menu item in a portal
|
|
446
|
+
* Creates a menu item that opens an external URL (no page is created). Use it to build a topbar or footer nav of external links (e.g. Chat / Case Studies / Contact). Pass name and url; positionType chooses the bar: 'sidebar' (default), 'top' (topbar), or 'footer'. Optionally pass icon, openInNewTab (default true), and parentId to nest under a folder. The link is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending link, and publishes it. Returns the created menu-item id and the draft branch/seqs. Requires portals.write access.
|
|
447
|
+
*/
|
|
448
|
+
createPortalLink(params: {
|
|
449
|
+
path: {
|
|
450
|
+
orgId: orgIdInPathRequired;
|
|
451
|
+
portalId: globalIdInPathRequired;
|
|
452
|
+
};
|
|
453
|
+
headers?: Record<string, string>;
|
|
454
|
+
body: CreatePortalLinkRequestContract;
|
|
455
|
+
}): Promise<CreatePortalLinkResponseContract>;
|
|
369
456
|
/**
|
|
370
457
|
* Create an empty portal page
|
|
371
|
-
* Creates a new EMPTY
|
|
458
|
+
* Creates a new EMPTY page in the portal — a page node plus its menu item, with no Fusebase note and no block. The page is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it. Pass positionType ('sidebar' default, 'top' or 'footer') to choose the menu bar. Pass parentId to nest the page under an existing published or active-draft folder. The returned pageId can immediately be passed to semantic block operations to add content before publishing. Use createPortalPageWithNote instead when a page backed by a new Fusebase note is wanted. Returns the page/menu-item ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
372
459
|
*/
|
|
373
460
|
createPortalPage(params: {
|
|
374
461
|
path: {
|
|
@@ -380,7 +467,7 @@ export declare class PortalsApi {
|
|
|
380
467
|
}): Promise<CreatePortalPageResponseContract>;
|
|
381
468
|
/**
|
|
382
469
|
* Create a portal page backed by a Fusebase note
|
|
383
|
-
* Creates a new sidebar page in the portal backed by a freshly created Fusebase note. The note is created in the portal's workspace and shared into the portal; optional initial text or html can be appended to it. The page (page node + note menu item + note content block) is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it. Pass parentId to nest the page under an existing folder. Returns the note/page/menu-item ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
470
|
+
* Creates a new sidebar page in the portal backed by a freshly created Fusebase note. The note is created in the portal's workspace and shared into the portal; optional initial text or html can be appended to it. The page (page node + note menu item + note content block) is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending page, and publishes it. Pass parentId to nest the page under an existing folder, or positionType ('sidebar' default, 'top', 'footer') to place a root page in a specific menu bar. Returns the note/page/menu-item ids, the page url, and the draft branch/seqs. Requires portals.write access.
|
|
384
471
|
*/
|
|
385
472
|
createPortalPageWithNote(params: {
|
|
386
473
|
path: {
|
|
@@ -390,6 +477,31 @@ export declare class PortalsApi {
|
|
|
390
477
|
headers?: Record<string, string>;
|
|
391
478
|
body: CreatePortalPageWithNoteRequestContract;
|
|
392
479
|
}): Promise<CreatePortalPageWithNoteResponseContract>;
|
|
480
|
+
/**
|
|
481
|
+
* Remove a block from a portal page
|
|
482
|
+
* Removes ONE existing removable block from a portal page and STAGES the deletion in the active customizer draft; the live portal only changes when the draft is published. Takes no body. It deletes the portal block ONLY — the backing Fusebase note, Kanban board, task list, app, agent, database/dashboard source and files are kept. Resolve the exact pageId and blockId with listPortalPageBlocks first and let the user choose when several blocks may match. Requires portals.write access.
|
|
483
|
+
*/
|
|
484
|
+
deletePortalBlock(params: {
|
|
485
|
+
path: {
|
|
486
|
+
orgId: orgIdInPathRequired;
|
|
487
|
+
portalId: globalIdInPathRequired;
|
|
488
|
+
pageId: globalIdInPathRequired;
|
|
489
|
+
blockId: globalIdInPathRequired;
|
|
490
|
+
};
|
|
491
|
+
headers?: Record<string, string>;
|
|
492
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
493
|
+
/**
|
|
494
|
+
* Delete a portal menu item
|
|
495
|
+
* Deletes a portal menu item (folder, page, or link) identified by itemId. Deleting a folder removes its whole subtree, including items created in the same draft. The portal's home item cannot be deleted. The item may be a published one (from listPortalContent) or one that exists only in the active draft, by the exact id its create operation returned. The deletion is staged in the portal's customizer draft (not published immediately): the owner reviews and publishes it, and a concurrent customizer edit returns 409 — retry the request. Requires portals.write access.
|
|
496
|
+
*/
|
|
497
|
+
deletePortalItem(params: {
|
|
498
|
+
path: {
|
|
499
|
+
orgId: orgIdInPathRequired;
|
|
500
|
+
portalId: globalIdInPathRequired;
|
|
501
|
+
itemId: globalIdInPathRequired;
|
|
502
|
+
};
|
|
503
|
+
headers?: Record<string, string>;
|
|
504
|
+
}): Promise<DeletePortalItemResponseContract>;
|
|
393
505
|
/**
|
|
394
506
|
* Duplicate an existing portal
|
|
395
507
|
* Creates a new portal as a full copy of an existing portal: settings, theme, menu structure, pages, and content blocks are all copied. Returns portal details. Status is 'ready' immediately for P_SUB domains; 'pending' for custom/CNAME domains or if content copy is still in progress. Requires org.write access.
|
|
@@ -426,6 +538,19 @@ export declare class PortalsApi {
|
|
|
426
538
|
};
|
|
427
539
|
headers?: Record<string, string>;
|
|
428
540
|
}): Promise<PortalDetailContract>;
|
|
541
|
+
/**
|
|
542
|
+
* Read one portal block's current settings
|
|
543
|
+
* Read-only step between listPortalPageBlocks and a typed updatePortal*Block operation: shows what the block is set to TODAY so the change can be confirmed with the user before it is staged. Reads the published portal AND its active customizer draft. Returns the block's semantic `kind` — the vocabulary the typed updates use, which neither `type` nor `templateType` gives on its own — plus `title`, `place`, `layout`, `editOperation` and the kind-specific `settings`. `settings` and `editOperation` are null for a kind whose typed update operation does not exist yet; call listPortalPageBlocks first to resolve the blockId. Internal customizer state (bricks, wrappers, share keys, draft events) is never returned. Requires portals.write access.
|
|
544
|
+
*/
|
|
545
|
+
getPortalBlock(params: {
|
|
546
|
+
path: {
|
|
547
|
+
orgId: orgIdInPathRequired;
|
|
548
|
+
portalId: globalIdInPathRequired;
|
|
549
|
+
pageId: globalIdInPathRequired;
|
|
550
|
+
blockId: globalIdInPathRequired;
|
|
551
|
+
};
|
|
552
|
+
headers?: Record<string, string>;
|
|
553
|
+
}): Promise<GetPortalBlockResponseContract>;
|
|
429
554
|
/**
|
|
430
555
|
* Count matching blocks on a portal page (published + draft)
|
|
431
556
|
* Universal preflight: how many active blocks of a given type a page already carries, counted over the published portal AND its active customizer draft — so a block staged earlier in this session is included. `type` is a canonical portal block type; `templateType` is allowed only with type='flexible' and narrows by the flexible template (e.g. type='flexible' + templateType='ai-agent' for AI Agent blocks). Returns only the count — never blocks, bricks, ids or draft events. Requires portals.write access.
|
|
@@ -548,6 +673,18 @@ export declare class PortalsApi {
|
|
|
548
673
|
};
|
|
549
674
|
headers?: Record<string, string>;
|
|
550
675
|
}): Promise<ListPortalLinkableBlocksResponseContract>;
|
|
676
|
+
/**
|
|
677
|
+
* List the blocks of a portal page
|
|
678
|
+
* Read-only discovery step before movePortalBlock, deletePortalBlock and the typed block updates. Lists EVERY block of ONE page over the published portal AND its active customizer draft, in display order, as `blocks` of `blockId`, `type`, `templateType`, `title`, `editOperation`, `place` and `draftOnly`. The order is the page order — area (`place`) first, then position inside it — and is what a move anchor refers to; a move anchor must share the block's `place`. `editOperation` names the typed update operation for the block, or is null when its kind has none yet. Unlike listPortalLinkableBlocks this includes Linked blocks, because they can be moved and deleted. The response carries identity only: never bricks, wrappers, content, data or draft events. Requires portals.write access.
|
|
679
|
+
*/
|
|
680
|
+
listPortalPageBlocks(params: {
|
|
681
|
+
path: {
|
|
682
|
+
orgId: orgIdInPathRequired;
|
|
683
|
+
portalId: globalIdInPathRequired;
|
|
684
|
+
pageId: globalIdInPathRequired;
|
|
685
|
+
};
|
|
686
|
+
headers?: Record<string, string>;
|
|
687
|
+
}): Promise<ListPortalPageBlocksResponseContract>;
|
|
551
688
|
/**
|
|
552
689
|
* List organization portals
|
|
553
690
|
* Returns portals visible for the caller in the organization. Requires portals.read and org access.
|
|
@@ -558,6 +695,20 @@ export declare class PortalsApi {
|
|
|
558
695
|
};
|
|
559
696
|
headers?: Record<string, string>;
|
|
560
697
|
}): Promise<OrgPortalListResponseContract>;
|
|
698
|
+
/**
|
|
699
|
+
* Move a block within its portal page
|
|
700
|
+
* Reorders ONE existing block on its own portal page and STAGES the change in the active customizer draft; nothing is published. Send exactly one position: `{position:"first"}`, `{position:"last"}`, `{beforeBlockId}` or `{afterBlockId}`. An anchor block must be on the same page, in the same area, and cannot be the block being moved. A raw index and the internal append sentinel 999 are rejected — the index is resolved server-side against the effective state, so a concurrent draft change cannot land the block in the wrong slot. Resolve ids with listPortalPageBlocks first. Moving to another page or changing the block's area is not supported. Requires portals.write access.
|
|
701
|
+
*/
|
|
702
|
+
movePortalBlock(params: {
|
|
703
|
+
path: {
|
|
704
|
+
orgId: orgIdInPathRequired;
|
|
705
|
+
portalId: globalIdInPathRequired;
|
|
706
|
+
pageId: globalIdInPathRequired;
|
|
707
|
+
blockId: globalIdInPathRequired;
|
|
708
|
+
};
|
|
709
|
+
headers?: Record<string, string>;
|
|
710
|
+
body: MovePortalBlockRequestContract;
|
|
711
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
561
712
|
/**
|
|
562
713
|
* Publish an entire portal draft after user confirmation
|
|
563
714
|
* Publishes every staged change in the portal's customizer draft to the live portal, including changes the owner or another user staged manually. Never call this operation automatically after staging content or settings. Before every call, tell the user that the entire pending draft will go live, ask one clear yes/no question, and wait for explicit confirmation. Do not infer publish permission from a content-edit request or successful staging. Confirmation is single-use and applies only to the current draft and one attempt. Returns 400 if the draft is empty and 409 if the portal was published elsewhere since the draft was based; obtain new confirmation before retrying. Requires portals.write access.
|
|
@@ -606,6 +757,130 @@ export declare class PortalsApi {
|
|
|
606
757
|
headers?: Record<string, string>;
|
|
607
758
|
body: UpdatePortalAccessRequestContract;
|
|
608
759
|
}): Promise<UpdatePortalAccessResponseContract>;
|
|
760
|
+
/**
|
|
761
|
+
* Update a portal AI Agent block
|
|
762
|
+
* Changes the exact agent used by one AI Agent block and synchronizes its title. Use listPortalAiAgents first.
|
|
763
|
+
*/
|
|
764
|
+
updatePortalAiAgentBlock(params: {
|
|
765
|
+
path: {
|
|
766
|
+
orgId: orgIdInPathRequired;
|
|
767
|
+
portalId: globalIdInPathRequired;
|
|
768
|
+
pageId: globalIdInPathRequired;
|
|
769
|
+
blockId: globalIdInPathRequired;
|
|
770
|
+
};
|
|
771
|
+
headers?: Record<string, string>;
|
|
772
|
+
body: UpdatePortalAiAgentBlockRequestContract;
|
|
773
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
774
|
+
/**
|
|
775
|
+
* Update a portal App block
|
|
776
|
+
* Updates the title or complete published-app identity of one existing App block. Binding changes require productId, appId, productType and productOrgId together.
|
|
777
|
+
*/
|
|
778
|
+
updatePortalAppBlock(params: {
|
|
779
|
+
path: {
|
|
780
|
+
orgId: orgIdInPathRequired;
|
|
781
|
+
portalId: globalIdInPathRequired;
|
|
782
|
+
pageId: globalIdInPathRequired;
|
|
783
|
+
blockId: globalIdInPathRequired;
|
|
784
|
+
};
|
|
785
|
+
headers?: Record<string, string>;
|
|
786
|
+
body: UpdatePortalAppBlockRequestContract;
|
|
787
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
788
|
+
/**
|
|
789
|
+
* Update a portal BPMN Diagram block
|
|
790
|
+
* Edits ONE existing BPMN Diagram block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one of `title`, `content.diagramHeight`, `appearance` or `layout` must be sent. `diagramHeight` is the BPMN canvas height inside the block, from 150 to 5000 pixels; `layout.height` is the separate outer block height. This operation cannot accept BPMN XML, import a `.bpmn` file, or edit process elements and links. Title is plain text and supports only {{ClientName}} and {{ClientLastName}}. Appearance is a complete variant. Layout width is 2 to 6 and manual height is at least 50; null restores automatic height. Call getPortalBlock first for current settings. Rejected with 400: an empty patch, invalid canvas/layout/appearance, unsupported variables, a block of another kind, and a patch the block already satisfies. Requires portals.write access.
|
|
791
|
+
*/
|
|
792
|
+
updatePortalBpmnDiagramBlock(params: {
|
|
793
|
+
path: {
|
|
794
|
+
orgId: orgIdInPathRequired;
|
|
795
|
+
portalId: globalIdInPathRequired;
|
|
796
|
+
pageId: globalIdInPathRequired;
|
|
797
|
+
blockId: globalIdInPathRequired;
|
|
798
|
+
};
|
|
799
|
+
headers?: Record<string, string>;
|
|
800
|
+
body: UpdatePortalBpmnDiagramBlockRequestContract;
|
|
801
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
802
|
+
/**
|
|
803
|
+
* Update a portal Card block
|
|
804
|
+
* Edits ONE existing Card block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. Editable: `view` (Card Type), `content` (image, heading, description, button and the shared destination), `appearance` and `layout` (`colspan` 2 to 6, `height` at least 50 or null for the automatic height). Each `content` item is a complete variant: a heading sent with only `size` keeps its stored text, styles and alignment, and `{ visible: false }` may carry nothing else — but re-showing an item with `{ visible: true }` keeps everything it had. `destination` is the Card's single link, shared with its Button; `null` removes it. Changing `view` repaints the text colours the way the Customizer does, unless an explicit `color` is sent with it. Call getPortalBlock first to see the current values — it reports no `appearance` for a Card still on its original wrapper, which is not a backdrop the update can ask for. Rejected with 400: an empty patch, text or styles next to a hidden item, a destination page outside this portal, a colour outside the Tailwind palette, background, padding or showTitle outside backdrop `custom`, a value outside the supported range, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
805
|
+
*/
|
|
806
|
+
updatePortalCardBlock(params: {
|
|
807
|
+
path: {
|
|
808
|
+
orgId: orgIdInPathRequired;
|
|
809
|
+
portalId: globalIdInPathRequired;
|
|
810
|
+
pageId: globalIdInPathRequired;
|
|
811
|
+
blockId: globalIdInPathRequired;
|
|
812
|
+
};
|
|
813
|
+
headers?: Record<string, string>;
|
|
814
|
+
body: UpdatePortalCardBlockRequestContract;
|
|
815
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
816
|
+
/**
|
|
817
|
+
* Update a portal Card group block
|
|
818
|
+
* Updates title, description, the full desired list of 1 to 6 cards, appearance or layout. Each card accepts plain title text, one built-in image and a same-portal page, absolute HTTPS URL, email or null destination. Image URLs, uploads, raw links, bricks and item indexes are never accepted.
|
|
819
|
+
*/
|
|
820
|
+
updatePortalCardGroupBlock(params: {
|
|
821
|
+
path: {
|
|
822
|
+
orgId: orgIdInPathRequired;
|
|
823
|
+
portalId: globalIdInPathRequired;
|
|
824
|
+
pageId: globalIdInPathRequired;
|
|
825
|
+
blockId: globalIdInPathRequired;
|
|
826
|
+
};
|
|
827
|
+
headers?: Record<string, string>;
|
|
828
|
+
body: UpdatePortalCardGroupBlockRequestContract;
|
|
829
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
830
|
+
/**
|
|
831
|
+
* Update a portal Carousel block
|
|
832
|
+
* Edits ONE existing Carousel block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: `layout` is a field-level patch, while `content.items`, when sent, is the FULL desired list of 1 to 6 slides in visual order. Each slide may contain `caption`, `description`, `button: { text }` or null, and `destination` or null. The slide surface and Button share one destination. Description supports only {{ClientName}} and {{ClientLastName}}; caption and Button text support no variables. Images remain the block's built-in images. Do not send media, autoplay, duration, controls, indicators, appearance or item ids. Layout width is 2 to 6 and manual height is at least 50; null restores automatic height. Call getPortalBlock first for the current full list. Rejected with 400: an empty patch, an invalid list or destination, unsupported variables, a block of another kind, and a patch the block already satisfies. Requires portals.write access.
|
|
833
|
+
*/
|
|
834
|
+
updatePortalCarouselBlock(params: {
|
|
835
|
+
path: {
|
|
836
|
+
orgId: orgIdInPathRequired;
|
|
837
|
+
portalId: globalIdInPathRequired;
|
|
838
|
+
pageId: globalIdInPathRequired;
|
|
839
|
+
blockId: globalIdInPathRequired;
|
|
840
|
+
};
|
|
841
|
+
headers?: Record<string, string>;
|
|
842
|
+
body: UpdatePortalCarouselBlockRequestContract;
|
|
843
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
844
|
+
/**
|
|
845
|
+
* Update a portal Chat block
|
|
846
|
+
* Updates title, exact channel/DM target, channel membership restriction or layout of one Chat widget. Use listPortalChatChannels or listPortalChatUsers before changing its target.
|
|
847
|
+
*/
|
|
848
|
+
updatePortalChatBlock(params: {
|
|
849
|
+
path: {
|
|
850
|
+
orgId: orgIdInPathRequired;
|
|
851
|
+
portalId: globalIdInPathRequired;
|
|
852
|
+
pageId: globalIdInPathRequired;
|
|
853
|
+
blockId: globalIdInPathRequired;
|
|
854
|
+
};
|
|
855
|
+
headers?: Record<string, string>;
|
|
856
|
+
body: UpdatePortalChatBlockRequestContract;
|
|
857
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
858
|
+
/**
|
|
859
|
+
* Set who may open one portal page or folder
|
|
860
|
+
* Replaces or extends the client-facing access list of one published portal page or folder selected by its exact full path. mode='replace' removes the previous item ACL and leaves access to the supplied emails; mode='add' preserves existing access and adds the supplied emails. Missing portal members receive a targeted client/editor portal invitation without being granted access to other private items. Folder permissions cascade to all descendants. mode='add' on an item that is open to everyone is a successful no-op — the users already have access and the item is not made private. The change is applied immediately and must not be followed by publishPortalDraft. Requires portals.manage access.
|
|
861
|
+
*/
|
|
862
|
+
updatePortalContentPermissions(params: {
|
|
863
|
+
path: {
|
|
864
|
+
orgId: orgIdInPathRequired;
|
|
865
|
+
portalId: globalIdInPathRequired;
|
|
866
|
+
};
|
|
867
|
+
headers?: Record<string, string>;
|
|
868
|
+
body: UpdatePortalContentPermissionsRequestContract;
|
|
869
|
+
}): Promise<UpdatePortalContentPermissionsResponseContract>;
|
|
870
|
+
/**
|
|
871
|
+
* Update a portal Countdown block
|
|
872
|
+
* Edits ONE existing Countdown block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one of `title`, `content.targetAt`, `appearance` or `layout` must be sent. `targetAt` is an absolute RFC 3339 date-time with Z or an explicit UTC offset; it must not be in the past or more than 99 days from the update. Never send epoch time, a timezone-less date, duration or internal countdown items. Title is plain text and supports only {{ClientName}} and {{ClientLastName}}. Appearance is a complete variant. Layout width is 2 to 6 and manual height is at least 50; null restores automatic height. Call getPortalBlock first for the current settings. Rejected with 400: an empty patch, invalid target, unsupported variables, invalid appearance/layout, a block of another kind, and a patch the block already satisfies. Requires portals.write access.
|
|
873
|
+
*/
|
|
874
|
+
updatePortalCountdownBlock(params: {
|
|
875
|
+
path: {
|
|
876
|
+
orgId: orgIdInPathRequired;
|
|
877
|
+
portalId: globalIdInPathRequired;
|
|
878
|
+
pageId: globalIdInPathRequired;
|
|
879
|
+
blockId: globalIdInPathRequired;
|
|
880
|
+
};
|
|
881
|
+
headers?: Record<string, string>;
|
|
882
|
+
body: UpdatePortalCountdownBlockRequestContract;
|
|
883
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
609
884
|
/**
|
|
610
885
|
* Update portal custom CSS/JS code
|
|
611
886
|
* Sets custom code for the portal: css (custom styles), headCode (HTML/JS at the start of <head>), and bodyCode (HTML/JS at the end of <body>). css is auto-scoped under the portal root container #main-scrolling-container so it cannot leak into the customizer UI; scope selectors accordingly and avoid body/html/:root. Only the provided fields change; omitted fields keep their current value, and an empty string clears a field. At least one field is required. Custom code only renders on portals served from a custom CNAME domain. The change is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending change, and publishes it. Returns the draft branch/seq. Requires portals.write access.
|
|
@@ -618,4 +893,251 @@ export declare class PortalsApi {
|
|
|
618
893
|
headers?: Record<string, string>;
|
|
619
894
|
body: UpdatePortalCustomCodeRequestContract;
|
|
620
895
|
}): Promise<UpdatePortalCustomCodeResponseContract>;
|
|
896
|
+
/**
|
|
897
|
+
* Update a portal Custom widget block
|
|
898
|
+
* Updates title, the full desired semantic brick list, appearance or layout of one existing Custom widget. Supported bricks are heading, text, built-in image, avatar, rating, link and button. Raw brick ids, indexes, image sources, classes and links are never accepted.
|
|
899
|
+
*/
|
|
900
|
+
updatePortalCustomWidgetBlock(params: {
|
|
901
|
+
path: {
|
|
902
|
+
orgId: orgIdInPathRequired;
|
|
903
|
+
portalId: globalIdInPathRequired;
|
|
904
|
+
pageId: globalIdInPathRequired;
|
|
905
|
+
blockId: globalIdInPathRequired;
|
|
906
|
+
};
|
|
907
|
+
headers?: Record<string, string>;
|
|
908
|
+
body: UpdatePortalCustomWidgetBlockRequestContract;
|
|
909
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
910
|
+
/**
|
|
911
|
+
* Update a portal Database block
|
|
912
|
+
* Edits ONE existing Database block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. Editable: `target`, `title`, `itemsPerPage` (10, 20, 50, 100, 200 or 500), `appearance` and `layout` (`colspan` 2 to 6, `height` at least 50 or null for the automatic height). `target` and `appearance` are NOT field-level patches: each is a complete variant when sent. Call listPortalDatabaseBlockSources for a new target and use the exact `databaseId`, `dashboardId` and `viewId` chain it returns; the whole chain is re-validated as the calling user. Call getPortalBlock first to see the current values — it reports no `databaseId`, because the block does not store one. Rejected with 400: an empty patch, an incomplete target variant, a dashboard or view the caller cannot read, a colour outside the Tailwind palette, background, padding or showTitle outside backdrop `custom`, a value outside the supported range, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
913
|
+
*/
|
|
914
|
+
updatePortalDatabaseBlock(params: {
|
|
915
|
+
path: {
|
|
916
|
+
orgId: orgIdInPathRequired;
|
|
917
|
+
portalId: globalIdInPathRequired;
|
|
918
|
+
pageId: globalIdInPathRequired;
|
|
919
|
+
blockId: globalIdInPathRequired;
|
|
920
|
+
};
|
|
921
|
+
headers?: Record<string, string>;
|
|
922
|
+
body: UpdatePortalDatabaseBlockRequestContract;
|
|
923
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
924
|
+
/**
|
|
925
|
+
* Update a portal Dynamic Table block
|
|
926
|
+
* Edits ONE existing Dynamic Table block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one of `title`, `appearance` or `layout` must be sent. This operation does not configure or replace the integration provider, OAuth connection, data source, columns or rows. Title is plain text and supports only {{ClientName}} and {{ClientLastName}}. Appearance is a complete variant. Layout width is 2 to 6 and manual height is at least 50; null restores automatic height. Call getPortalBlock first for the current settings. Rejected with 400: an empty patch, unsupported variables, invalid appearance/layout, a block of another kind, and a patch the block already satisfies. Requires portals.write access.
|
|
927
|
+
*/
|
|
928
|
+
updatePortalDynamicTableBlock(params: {
|
|
929
|
+
path: {
|
|
930
|
+
orgId: orgIdInPathRequired;
|
|
931
|
+
portalId: globalIdInPathRequired;
|
|
932
|
+
pageId: globalIdInPathRequired;
|
|
933
|
+
blockId: globalIdInPathRequired;
|
|
934
|
+
};
|
|
935
|
+
headers?: Record<string, string>;
|
|
936
|
+
body: UpdatePortalDynamicTableBlockRequestContract;
|
|
937
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
938
|
+
/**
|
|
939
|
+
* Update a portal Embed block
|
|
940
|
+
* Edits ONE existing Embed block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. Editable: `title`, `embedType`, `url` or `content`, `showEmbedLink`, `colspan` (2 to 6), `rowspan` (1 to 4) and `height` (a positive number, or null for the automatic height). The SOURCE is not a field-level patch: `embedType` plus exactly one of `url` (named variants) or `content` (`custom`) is a complete variant, so changing the type requires sending the matching source in the same request, and `embedType` alone is rejected. Call getPortalBlock first to see the current values. Rejected with 400: an empty patch, a url on a `custom` embed or content on a named one, a non-external or malformed url, embed code with no supported construct, a value outside the supported range, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
941
|
+
*/
|
|
942
|
+
updatePortalEmbedBlock(params: {
|
|
943
|
+
path: {
|
|
944
|
+
orgId: orgIdInPathRequired;
|
|
945
|
+
portalId: globalIdInPathRequired;
|
|
946
|
+
pageId: globalIdInPathRequired;
|
|
947
|
+
blockId: globalIdInPathRequired;
|
|
948
|
+
};
|
|
949
|
+
headers?: Record<string, string>;
|
|
950
|
+
body: UpdatePortalEmbedBlockRequestContract;
|
|
951
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
952
|
+
/**
|
|
953
|
+
* Update a portal File uploader block
|
|
954
|
+
* Updates title, short description, Author/Upload date visibility or layout of one existing File uploader block. It does not expose storage, permissions, bucket/file ids, query, sort, limit, appearance or rows.
|
|
955
|
+
*/
|
|
956
|
+
updatePortalFileUploaderBlock(params: {
|
|
957
|
+
path: {
|
|
958
|
+
orgId: orgIdInPathRequired;
|
|
959
|
+
portalId: globalIdInPathRequired;
|
|
960
|
+
pageId: globalIdInPathRequired;
|
|
961
|
+
blockId: globalIdInPathRequired;
|
|
962
|
+
};
|
|
963
|
+
headers?: Record<string, string>;
|
|
964
|
+
body: UpdatePortalFileUploaderBlockRequestContract;
|
|
965
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
966
|
+
/**
|
|
967
|
+
* Update a portal Form block
|
|
968
|
+
* Updates title, description, form fields/submit/reusable settings, appearance or layout. Fields are a full desired list: preserve existing fieldId values and omit fieldId only for new fields. A non-reusable Form with response data cannot change fields or submit controls. Response data, brick ids and indexes are never accepted.
|
|
969
|
+
*/
|
|
970
|
+
updatePortalFormBlock(params: {
|
|
971
|
+
path: {
|
|
972
|
+
orgId: orgIdInPathRequired;
|
|
973
|
+
portalId: globalIdInPathRequired;
|
|
974
|
+
pageId: globalIdInPathRequired;
|
|
975
|
+
blockId: globalIdInPathRequired;
|
|
976
|
+
};
|
|
977
|
+
headers?: Record<string, string>;
|
|
978
|
+
body: UpdatePortalFormBlockRequestContract;
|
|
979
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
980
|
+
/**
|
|
981
|
+
* Update a portal Heading block
|
|
982
|
+
* Edits ONE existing Text & Media Heading block and STAGES the change in the active customizer draft; nothing is published. Editable: `content` (text, colour, size, styles, alignment), `appearance` and `layout`. The block's wrapper title, HTML, CSS, image url and raw bricks are not accepted. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. `content` is a field-level patch — a size, style or alignment left out keeps what the block has today. `appearance` is NOT: it is a discriminated variant and must be sent complete, so read the current one with getPortalBlock first; under backdrop `custom` an omitted `background` keeps the block's current one, which is what getPortalBlock reports for a block still on the portal theme's surface colour. `layout.colspan` is 2 to 6 and `layout.height` is at least 50, or null for the automatic height. Rejected with 400: an empty patch, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
983
|
+
*/
|
|
984
|
+
updatePortalHeadingBlock(params: {
|
|
985
|
+
path: {
|
|
986
|
+
orgId: orgIdInPathRequired;
|
|
987
|
+
portalId: globalIdInPathRequired;
|
|
988
|
+
pageId: globalIdInPathRequired;
|
|
989
|
+
blockId: globalIdInPathRequired;
|
|
990
|
+
};
|
|
991
|
+
headers?: Record<string, string>;
|
|
992
|
+
body: UpdatePortalTextBlockRequestContract;
|
|
993
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
994
|
+
/**
|
|
995
|
+
* Update portal homepage settings
|
|
996
|
+
* Sets the portal's Homepage settings, the same panel the customizer shows: title (renames the Home menu item and the homepage itself) and the sidebar toggles showSidebarOnOtherPages, showSidebarOnHomePage and expandSidebarByDefault. Only the provided fields change; omitted fields keep their current value. The change is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending change under Homepage settings, and publishes it. Returns the draft branch and the seqs of the staged events. Requires portals.write access.
|
|
997
|
+
*/
|
|
998
|
+
updatePortalHomepage(params: {
|
|
999
|
+
path: {
|
|
1000
|
+
orgId: orgIdInPathRequired;
|
|
1001
|
+
portalId: globalIdInPathRequired;
|
|
1002
|
+
};
|
|
1003
|
+
headers?: Record<string, string>;
|
|
1004
|
+
body: UpdatePortalHomepageRequestContract;
|
|
1005
|
+
}): Promise<UpdatePortalHomepageResponseContract>;
|
|
1006
|
+
/**
|
|
1007
|
+
* Update a portal HTML/CSS block
|
|
1008
|
+
* Updates title, a partial raw HTML/CSS/JavaScript content patch or layout of one existing HTML/CSS block. The portal must use a verified custom CNAME domain. Omitted code fields remain unchanged and an empty string clears one field.
|
|
1009
|
+
*/
|
|
1010
|
+
updatePortalHtmlCssBlock(params: {
|
|
1011
|
+
path: {
|
|
1012
|
+
orgId: orgIdInPathRequired;
|
|
1013
|
+
portalId: globalIdInPathRequired;
|
|
1014
|
+
pageId: globalIdInPathRequired;
|
|
1015
|
+
blockId: globalIdInPathRequired;
|
|
1016
|
+
};
|
|
1017
|
+
headers?: Record<string, string>;
|
|
1018
|
+
body: UpdatePortalHtmlCssBlockRequestContract;
|
|
1019
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1020
|
+
/**
|
|
1021
|
+
* Update a portal Image block layout
|
|
1022
|
+
* Edits the LAYOUT of one existing Text & Media Image block and STAGES the change in the active customizer draft; nothing is published. The picture stays the Customizer's built-in image — an image url, asset id, upload, base64, local path, filename, content or appearance is rejected. `layout.colspan` is 2 to 6 and `layout.height` is at least 50, or null for the automatic height. Rejected with 400: an empty patch, a block of another kind, and a patch the block already satisfies. Requires portals.write access.
|
|
1023
|
+
*/
|
|
1024
|
+
updatePortalImageBlock(params: {
|
|
1025
|
+
path: {
|
|
1026
|
+
orgId: orgIdInPathRequired;
|
|
1027
|
+
portalId: globalIdInPathRequired;
|
|
1028
|
+
pageId: globalIdInPathRequired;
|
|
1029
|
+
blockId: globalIdInPathRequired;
|
|
1030
|
+
};
|
|
1031
|
+
headers?: Record<string, string>;
|
|
1032
|
+
body: UpdatePortalImageBlockRequestContract;
|
|
1033
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1034
|
+
/**
|
|
1035
|
+
* Update a portal Info block
|
|
1036
|
+
* Updates title, a complete semantic image or destination variant, new-tab behavior or layout of one existing Info block. Icon images require an exact id returned by searchPortalInfoBlockIcons. Raw persisted image/link values, wrappers and indexes are never accepted.
|
|
1037
|
+
*/
|
|
1038
|
+
updatePortalInfoBlock(params: {
|
|
1039
|
+
path: {
|
|
1040
|
+
orgId: orgIdInPathRequired;
|
|
1041
|
+
portalId: globalIdInPathRequired;
|
|
1042
|
+
pageId: globalIdInPathRequired;
|
|
1043
|
+
blockId: globalIdInPathRequired;
|
|
1044
|
+
};
|
|
1045
|
+
headers?: Record<string, string>;
|
|
1046
|
+
body: UpdatePortalInfoBlockRequestContract;
|
|
1047
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1048
|
+
/**
|
|
1049
|
+
* Update a portal menu item
|
|
1050
|
+
* Updates an existing portal menu item (folder, page, or link) identified by itemId. Supports rename (name), icon, visibility (visible), reorder within a bar (index), moving between bars (positionType: sidebar/top/footer), and re-parenting (parentId, '' = root). Re-parenting is rejected (400) if parentId is the item itself, one of its descendants, or an item that cannot hold children (only a folder, note, section, process or page can — a link, dashboard, tag list or the home item is rejected), and 404s if the parent is not in the menu. A re-parented item moves to its parent's bar along with its whole subtree, so a positionType passed alongside parentId must match the parent's bar (400 otherwise). Pass only the fields to change; at least one is required. The item may be a published one (from listPortalContent) or one that exists only in the active draft — use the exact menuItemId/folderId returned by createPortalPage, createPortalPageWithNote, createPortalFolder or createPortalLink. The same holds for parentId. The change is staged in the portal's customizer draft (not published immediately): the owner reviews and publishes it, and a concurrent customizer edit returns 409 — retry the request. Requires portals.write access.
|
|
1051
|
+
*/
|
|
1052
|
+
updatePortalItem(params: {
|
|
1053
|
+
path: {
|
|
1054
|
+
orgId: orgIdInPathRequired;
|
|
1055
|
+
portalId: globalIdInPathRequired;
|
|
1056
|
+
itemId: globalIdInPathRequired;
|
|
1057
|
+
};
|
|
1058
|
+
headers?: Record<string, string>;
|
|
1059
|
+
body: UpdatePortalItemRequestContract;
|
|
1060
|
+
}): Promise<UpdatePortalItemResponseContract>;
|
|
1061
|
+
/**
|
|
1062
|
+
* Update a portal Linked block
|
|
1063
|
+
* Changes the exact source of ONE existing Linked block and stages the change. Resolve the source page with listPortalContent, then use the exact source from listPortalLinkableBlocks. Both portals must be in the same organization and editable by the caller. A cross-portal source must be published. Linked blocks cannot reference another Linked block or a source on their own target page. Title, content, appearance and layout are mirrored and cannot be supplied.
|
|
1064
|
+
*/
|
|
1065
|
+
updatePortalLinkedBlock(params: {
|
|
1066
|
+
path: {
|
|
1067
|
+
orgId: orgIdInPathRequired;
|
|
1068
|
+
portalId: globalIdInPathRequired;
|
|
1069
|
+
pageId: globalIdInPathRequired;
|
|
1070
|
+
blockId: globalIdInPathRequired;
|
|
1071
|
+
};
|
|
1072
|
+
headers?: Record<string, string>;
|
|
1073
|
+
body: UpdatePortalLinkedBlockRequestContract;
|
|
1074
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1075
|
+
/**
|
|
1076
|
+
* Update a note-backed portal block
|
|
1077
|
+
* Edits ONE existing note-backed block — the kind behind addPortalNoteBlock, addPortalBlankNoteBlock, addPortalKanbanBlock and addPortalTaskListBlock, which all persist as the same block kind — and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. Editable: `title`, `layout.colspan` (3, 4, 5 or 6) and `layout.height` (at least 50, or null for the automatic height). The block's CONTENT is not editable here — the note's text, the Kanban board and the task list belong to their own operations, and noteId/workspaceId are the block's identity. Call getPortalBlock first to see the current values and confirm the change. Rejected with 400: an empty patch, a colspan or height outside the supported range, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
1078
|
+
*/
|
|
1079
|
+
updatePortalNoteBlock(params: {
|
|
1080
|
+
path: {
|
|
1081
|
+
orgId: orgIdInPathRequired;
|
|
1082
|
+
portalId: globalIdInPathRequired;
|
|
1083
|
+
pageId: globalIdInPathRequired;
|
|
1084
|
+
blockId: globalIdInPathRequired;
|
|
1085
|
+
};
|
|
1086
|
+
headers?: Record<string, string>;
|
|
1087
|
+
body: UpdatePortalNoteBlockRequestContract;
|
|
1088
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1089
|
+
/**
|
|
1090
|
+
* Update a portal Recent files block
|
|
1091
|
+
* Edits ONE existing Recent files block and STAGES the change in the active customizer draft; nothing is published. This is a PATCH: an omitted field keeps its current value, and at least one of `title`, `source` or `layout` must be sent. Source is either the entire portal or one exact page in the same portal; resolve that page first with listPortalContent. The operation cannot change sort order, the five-item limit, offset, file type, other query data or appearance. Width is 3, 4, 5 or 6 and manual height is at least 50; null restores automatic height. Call getPortalBlock first for the current settings. Requires portals.write access.
|
|
1092
|
+
*/
|
|
1093
|
+
updatePortalRecentFilesBlock(params: {
|
|
1094
|
+
path: {
|
|
1095
|
+
orgId: orgIdInPathRequired;
|
|
1096
|
+
portalId: globalIdInPathRequired;
|
|
1097
|
+
pageId: globalIdInPathRequired;
|
|
1098
|
+
blockId: globalIdInPathRequired;
|
|
1099
|
+
};
|
|
1100
|
+
headers?: Record<string, string>;
|
|
1101
|
+
body: UpdatePortalRecentFilesBlockRequestContract;
|
|
1102
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1103
|
+
/**
|
|
1104
|
+
* Update portal branding
|
|
1105
|
+
* Sets the portal's branding, the same fields the customizer's Portal style panel writes: the color theme, the header logo and the favicon. Only the provided fields change; omitted fields keep their current value. Colors come from the named themes — arbitrary hex colors and web fonts are not part of the portal theme model; use updatePortalCustomCode for those. The change is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending change and publishes it. Returns the draft branch and the seq of the staged event. Requires portals.write access.
|
|
1106
|
+
*/
|
|
1107
|
+
updatePortalStyle(params: {
|
|
1108
|
+
path: {
|
|
1109
|
+
orgId: orgIdInPathRequired;
|
|
1110
|
+
portalId: globalIdInPathRequired;
|
|
1111
|
+
};
|
|
1112
|
+
headers?: Record<string, string>;
|
|
1113
|
+
body: UpdatePortalStyleRequestContract;
|
|
1114
|
+
}): Promise<UpdatePortalStyleResponseContract>;
|
|
1115
|
+
/**
|
|
1116
|
+
* Update a portal Simple text block
|
|
1117
|
+
* Edits ONE existing Text & Media Simple text block and STAGES the change in the active customizer draft; nothing is published. Editable: `content` (text, colour, size, styles, alignment), `appearance` and `layout`. The block's wrapper title, HTML, CSS, image url and raw bricks are not accepted. This is a PATCH: an omitted field keeps its current value, and at least one field must be sent. `content` is a field-level patch — a size, style or alignment left out keeps what the block has today. `appearance` is NOT: it is a discriminated variant and must be sent complete, so read the current one with getPortalBlock first; under backdrop `custom` an omitted `background` keeps the block's current one, which is what getPortalBlock reports for a block still on the portal theme's surface colour. `layout.colspan` is 2 to 6 and `layout.height` is at least 50, or null for the automatic height. Rejected with 400: an empty patch, a block of another kind, and a patch the block already satisfies — the message names which. Requires portals.write access.
|
|
1118
|
+
*/
|
|
1119
|
+
updatePortalTextBlock(params: {
|
|
1120
|
+
path: {
|
|
1121
|
+
orgId: orgIdInPathRequired;
|
|
1122
|
+
portalId: globalIdInPathRequired;
|
|
1123
|
+
pageId: globalIdInPathRequired;
|
|
1124
|
+
blockId: globalIdInPathRequired;
|
|
1125
|
+
};
|
|
1126
|
+
headers?: Record<string, string>;
|
|
1127
|
+
body: UpdatePortalTextBlockRequestContract;
|
|
1128
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
1129
|
+
/**
|
|
1130
|
+
* Update a portal Timeline block
|
|
1131
|
+
* Updates view, title, content, appearance or layout of one existing Timeline. content.steps is the full desired visual-order list of 1..6 steps; completed steps must form one prefix. Internal destinations use exact same-portal page ids.
|
|
1132
|
+
*/
|
|
1133
|
+
updatePortalTimelineBlock(params: {
|
|
1134
|
+
path: {
|
|
1135
|
+
orgId: orgIdInPathRequired;
|
|
1136
|
+
portalId: globalIdInPathRequired;
|
|
1137
|
+
pageId: globalIdInPathRequired;
|
|
1138
|
+
blockId: globalIdInPathRequired;
|
|
1139
|
+
};
|
|
1140
|
+
headers?: Record<string, string>;
|
|
1141
|
+
body: UpdatePortalTimelineBlockRequestContract;
|
|
1142
|
+
}): Promise<StagedPortalBlockResponseContract>;
|
|
621
1143
|
}
|