@fusebase/fusebase-gate-sdk 2.3.16 → 2.3.18

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.
@@ -5,7 +5,7 @@
5
5
  * Domain: notes
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { AddWorkspaceNoteAttachmentRequestContract, AddWorkspaceNoteAttachmentResponseContract, CreateWorkspaceNoteFolderRequestContract, CreateWorkspaceNoteFolderResponseContract, CreateWorkspaceNoteRequestContract, CreateWorkspaceNoteResponseContract, orgIdInPathRequired, WorkspaceIdInPathRequired, WorkspaceNoteContentResponseContract, WorkspaceNoteFolderListResponseContract, WorkspaceNoteIdInPathRequired, WorkspaceNoteListResponseContract, WorkspaceNoteParentIdInQueryOptional } from "../types";
8
+ import type { AddWorkspaceNoteAttachmentRequestContract, AddWorkspaceNoteAttachmentResponseContract, AppendWorkspaceNoteContentRequestContract, CreateWorkspaceNoteFolderRequestContract, CreateWorkspaceNoteFolderResponseContract, CreateWorkspaceNoteRequestContract, CreateWorkspaceNoteResponseContract, orgIdInPathRequired, WorkspaceIdInPathRequired, WorkspaceNoteContentResponseContract, WorkspaceNoteFolderListResponseContract, WorkspaceNoteIdInPathRequired, WorkspaceNoteListResponseContract, WorkspaceNoteParentIdInQueryOptional } from "../types";
9
9
  export declare class NotesApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -22,6 +22,19 @@ export declare class NotesApi {
22
22
  headers?: Record<string, string>;
23
23
  body: AddWorkspaceNoteAttachmentRequestContract;
24
24
  }): Promise<AddWorkspaceNoteAttachmentResponseContract>;
25
+ /**
26
+ * Append content to workspace note
27
+ * Appends text or html to the end of an existing workspace note without replacing current content, then returns the refreshed note md. Prefer a real workspace id; when the path workspaceId is `default`, gate resolves it to the organization's default workspace before calling note-service and editor-server. For markdown sources, apps should render markdown to html before calling this operation when formatting fidelity matters; otherwise send markdown-like text as `format: text`.
28
+ */
29
+ appendWorkspaceNoteContent(params: {
30
+ path: {
31
+ orgId: orgIdInPathRequired;
32
+ workspaceId: WorkspaceIdInPathRequired;
33
+ noteId: WorkspaceNoteIdInPathRequired;
34
+ };
35
+ headers?: Record<string, string>;
36
+ body: AppendWorkspaceNoteContentRequestContract;
37
+ }): Promise<WorkspaceNoteContentResponseContract>;
25
38
  /**
26
39
  * Create workspace note
27
40
  * Creates a note in the requested workspace. Prefer a real workspace id; when the path workspaceId is `default`, gate resolves it to the organization's default workspace before calling note-service and editor-server. When parentId is omitted, gate uses `default`. Optional initial text or html can be appended after creation.
@@ -26,6 +26,21 @@ class NotesApi {
26
26
  expectedContentType: "application/json",
27
27
  });
28
28
  }
29
+ /**
30
+ * Append content to workspace note
31
+ * Appends text or html to the end of an existing workspace note without replacing current content, then returns the refreshed note md. Prefer a real workspace id; when the path workspaceId is `default`, gate resolves it to the organization's default workspace before calling note-service and editor-server. For markdown sources, apps should render markdown to html before calling this operation when formatting fidelity matters; otherwise send markdown-like text as `format: text`.
32
+ */
33
+ async appendWorkspaceNoteContent(params) {
34
+ return this.client.request({
35
+ method: "POST",
36
+ path: "/:orgId/workspaces/:workspaceId/notes/:noteId/content",
37
+ pathParams: params.path,
38
+ headers: params.headers,
39
+ body: params.body,
40
+ opId: "appendWorkspaceNoteContent",
41
+ expectedContentType: "application/json",
42
+ });
43
+ }
29
44
  /**
30
45
  * Create workspace note
31
46
  * Creates a note in the requested workspace. Prefer a real workspace id; when the path workspaceId is `default`, gate resolves it to the organization's default workspace before calling note-service and editor-server. When parentId is omitted, gate uses `default`. Optional initial text or html can be appended after creation.
@@ -5,7 +5,7 @@
5
5
  * Domain: portals
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, globalIdInPathRequired, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalContentResponseContract, orgIdInPathRequired, OrgPortalListResponseContract, PortalDetailContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract } from "../types";
8
+ import type { AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlockRequestContract, AddPortalBlockResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, globalIdInPathRequired, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalContentResponseContract, orgIdInPathRequired, OrgPortalListResponseContract, PortalDetailContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract } from "../types";
9
9
  export declare class PortalsApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -21,6 +21,18 @@ export declare class PortalsApi {
21
21
  headers?: Record<string, string>;
22
22
  body: AddPortalAppPageRequestContract;
23
23
  }): Promise<AddPortalAppPageResponseContract>;
24
+ /**
25
+ * Add a block of any palette type to a portal page
26
+ * Stages a single block of any supported type onto an existing portal page — the universal building block behind the customizer's 'Add new block' palette (no new page or sidebar item is created). Pass pageId (the target page node id from listPortalContent) and type. Supported types: note, content, embed, chat, info, docs, help, request, meetings, links, task-list, projection, files-dashboard, tasks-dashboard, chats-dashboard, files-recent, files-bucket, flexible. Type-specific fields: note/content require noteId; flexible requires template (e.g. {type:'text'|'image'|'title'|'code'|'form'|'dashboard'|'ai-agent'|'app-feature'|...}) and may carry bricks; embed/info/projection/task-list and others take their fields via the free-form `properties` object (e.g. embedType/content/contentUrl, image/link, sourcePortalId/sourcePageId/sourceBlockId, taskListIds). Use addPortalNoteBlock for the common note case or addPortalAppPage for an app on its own page. Note: a `content` block renames the page to its title, so leave title empty for content blocks. The block is staged in the portal's customizer draft (not published immediately); the owner reviews and publishes it. Returns the block id and the draft branch/seqs. Requires portals.write access.
27
+ */
28
+ addPortalBlock(params: {
29
+ path: {
30
+ orgId: orgIdInPathRequired;
31
+ portalId: globalIdInPathRequired;
32
+ };
33
+ headers?: Record<string, string>;
34
+ body: AddPortalBlockRequestContract;
35
+ }): Promise<AddPortalBlockResponseContract>;
24
36
  /**
25
37
  * Add an existing Fusebase note as a block to a portal page
26
38
  * Embeds an existing Fusebase note as a content block on an existing portal page (no new page or sidebar item is created). The note must already exist in the portal's workspace and be shared into the portal (e.g. created via createPortalPageWithNote). Pass pageId (the target page node id, obtained from listPortalContent) and noteId. The block is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending block, and publishes it. Returns the created block id and the draft branch/seqs. Requires portals.write access.
@@ -26,6 +26,21 @@ class PortalsApi {
26
26
  expectedContentType: "application/json",
27
27
  });
28
28
  }
29
+ /**
30
+ * Add a block of any palette type to a portal page
31
+ * Stages a single block of any supported type onto an existing portal page — the universal building block behind the customizer's 'Add new block' palette (no new page or sidebar item is created). Pass pageId (the target page node id from listPortalContent) and type. Supported types: note, content, embed, chat, info, docs, help, request, meetings, links, task-list, projection, files-dashboard, tasks-dashboard, chats-dashboard, files-recent, files-bucket, flexible. Type-specific fields: note/content require noteId; flexible requires template (e.g. {type:'text'|'image'|'title'|'code'|'form'|'dashboard'|'ai-agent'|'app-feature'|...}) and may carry bricks; embed/info/projection/task-list and others take their fields via the free-form `properties` object (e.g. embedType/content/contentUrl, image/link, sourcePortalId/sourcePageId/sourceBlockId, taskListIds). Use addPortalNoteBlock for the common note case or addPortalAppPage for an app on its own page. Note: a `content` block renames the page to its title, so leave title empty for content blocks. The block is staged in the portal's customizer draft (not published immediately); the owner reviews and publishes it. Returns the block id and the draft branch/seqs. Requires portals.write access.
32
+ */
33
+ async addPortalBlock(params) {
34
+ return this.client.request({
35
+ method: "POST",
36
+ path: "/:orgId/portals/:portalId/blocks",
37
+ pathParams: params.path,
38
+ headers: params.headers,
39
+ body: params.body,
40
+ opId: "addPortalBlock",
41
+ expectedContentType: "application/json",
42
+ });
43
+ }
29
44
  /**
30
45
  * Add an existing Fusebase note as a block to a portal page
31
46
  * Embeds an existing Fusebase note as a content block on an existing portal page (no new page or sidebar item is created). The note must already exist in the portal's workspace and be shared into the portal (e.g. created via createPortalPageWithNote). Pass pageId (the target page node id, obtained from listPortalContent) and noteId. The block is staged in the portal's customizer draft (not published immediately): the portal owner opens the customizer, reviews the pending block, and publishes it. Returns the created block id and the draft branch/seqs. Requires portals.write access.
@@ -20,7 +20,7 @@ export * from "./org-group/org-group";
20
20
  export type { CreateWorkspaceRequestContract, OrgInviteContract, OrgMagicLinkContract, OrgPortalContract, OrgPortalListResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserContract, OrgUserListResponseContract, OrgWorkspaceContract, OrgWorkspaceInviteContract, OrgWorkspaceListResponseContract, OrgWorkspaceMemberContract } from "./org-user/org-user";
21
21
  export * from "./orgs/orgs";
22
22
  export type { VerifyPortalFeatureContextTokenRequestContract, VerifyPortalFeatureContextTokenResponseContract } from "./portal-feature-context/portal-feature-context";
23
- export type { AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, BulkInviteResultItemContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, BulkPortalInvitationContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalContentResponseContract, PortalContentItemContract, PortalDetailContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract, globalIdInPathRequired } from "./portals/portals";
23
+ export type { AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlockRequestContract, AddPortalBlockResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, BulkInviteResultItemContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, BulkPortalInvitationContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalContentResponseContract, PortalContentItemContract, PortalDetailContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract, globalIdInPathRequired } from "./portals/portals";
24
24
  export * from "./shared/common";
25
25
  export * from "./shared/enums";
26
26
  export type { GetHealth200ResponseContract } from "./shared/health";
@@ -53,6 +53,16 @@ export interface CreateWorkspaceNoteRequestContract {
53
53
  export interface CreateWorkspaceNoteResponseContract {
54
54
  note: WorkspaceNoteSummaryContract;
55
55
  }
56
+ export interface AppendWorkspaceNoteContentRequestContract {
57
+ /**
58
+ * Text or html to append to the end of the existing note.
59
+ */
60
+ content: string;
61
+ /**
62
+ * Content format used with `content`. Defaults to `text`.
63
+ */
64
+ format?: WorkspaceNoteContentFormatContract | null;
65
+ }
56
66
  export interface AddWorkspaceNoteAttachmentRequestContract {
57
67
  /**
58
68
  * Stored-file UUID returned by completeMultipartFileUpload.
@@ -129,6 +129,52 @@ export interface AddPortalNoteBlockResponseContract {
129
129
  */
130
130
  staged: boolean;
131
131
  }
132
+ /**
133
+ * Block types the portal-service draft reducer (`blockFromDto`) understands.
134
+ * Any other value is rejected with 400 (the reducer throws on unknown types,
135
+ * which would otherwise fail the whole draft at publish time).
136
+ */
137
+ export type PortalBlockType = "note" | "content" | "embed" | "chat" | "info" | "docs" | "help" | "request" | "meetings" | "links" | "task-list" | "projection" | "files-dashboard" | "tasks-dashboard" | "chats-dashboard" | "files-recent" | "files-bucket" | "flexible";
138
+ export interface AddPortalBlockRequestContract {
139
+ /** Id of the existing portal page node to add the block to. */
140
+ pageId: string;
141
+ /** Block type to stage (see the op description for per-type fields). */
142
+ type: PortalBlockType;
143
+ /** Optional block title (defaults to the page's current title). */
144
+ title?: string;
145
+ /** Required for `note`/`content` blocks: the Fusebase note to embed. */
146
+ noteId?: string;
147
+ /** Required for `flexible` blocks: the flexible template, e.g. `{type:"text"}`. */
148
+ template?: {
149
+ type: string;
150
+ view?: string;
151
+ };
152
+ /** Optional bricks for `flexible` blocks. */
153
+ bricks?: unknown[];
154
+ /**
155
+ * Optional type-specific fields merged into the staged block verbatim, e.g.
156
+ * `embedType`/`content`/`contentUrl` for embed, `image`/`link` for info,
157
+ * `sourcePortalId`/`sourcePageId`/`sourceBlockId` for projection,
158
+ * `taskListIds` for task-list. Also overrides scaffold defaults (colspan,
159
+ * rowspan, …) when provided.
160
+ */
161
+ properties?: Record<string, unknown>;
162
+ }
163
+ export interface AddPortalBlockResponseContract {
164
+ /** Id of the created block. */
165
+ blockId: string;
166
+ /** Id of the page the block was added to. */
167
+ pageId: string;
168
+ /** Draft branch the change was staged on. */
169
+ branchId: string;
170
+ /** Sequence numbers assigned to the staged change events (addBlock). */
171
+ seqs: number[];
172
+ /**
173
+ * Always true: the block is staged in the portal's customizer draft, not yet
174
+ * live. The portal owner reviews and publishes it from the customizer.
175
+ */
176
+ staged: boolean;
177
+ }
132
178
  export interface AddPortalAppPageRequestContract {
133
179
  /**
134
180
  * Global id of the published Fusebase product that owns the app (the product
@@ -43,6 +43,7 @@ export interface TokenListPaginationContract {
43
43
  limit: number;
44
44
  total: number;
45
45
  total_pages: number;
46
+ total_is_approximate?: boolean;
46
47
  }
47
48
  export interface RevokeTokenResponseContract {
48
49
  success: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusebase/fusebase-gate-sdk",
3
- "version": "2.3.16",
3
+ "version": "2.3.18",
4
4
  "description": "TypeScript SDK for Fusebase Gate APIs - Generated from contract introspection",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -0,0 +1,49 @@
1
+ # Release Notes 2.3.16-sdk.2
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.3.16`
5
+ - Generated at: 2026-06-30T20:37:18.064Z
6
+
7
+ ## Included Drafts
8
+
9
+ - `docs/release-notes/2026-06-30-append-workspace-note-content.md` - Append workspace note content
10
+
11
+ ## Summary
12
+
13
+ ### Append workspace note content
14
+
15
+ Add an append-only workspace note content operation for apps that need to add content to an existing note without replacing the note body.
16
+
17
+
18
+ ## API / SDK Changes
19
+
20
+ ### Append workspace note content
21
+
22
+ - Added `appendWorkspaceNoteContent`.
23
+ - The operation accepts a workspace note id plus non-empty `content`, with optional `format: "text" | "html"`.
24
+ - The operation appends to the end of the note and returns the refreshed note metadata plus `note.md`.
25
+ - Regenerated SDK/OpenAPI artifacts include the new Notes API method and request contract.
26
+
27
+
28
+ ## Consumer Impact
29
+
30
+ ### Append workspace note content
31
+
32
+ Apps can now update existing notes by appending text or HTML instead of creating a new note. For Markdown sources, apps should render Markdown to HTML before calling the operation when formatting fidelity matters; otherwise send the content as text.
33
+
34
+
35
+ ## Verification
36
+
37
+ ### Append workspace note content
38
+
39
+ - `npm run build:sdk`
40
+ - `npm run mcp:skills:generate`
41
+ - `npm run mcp:skills:validate`
42
+ - `npm run mcp:skills:copy-to-apps-cli:local`
43
+
44
+
45
+ ## Follow-ups
46
+
47
+ ### Append workspace note content
48
+
49
+ - Full note replacement/editing remains a separate product/API decision because it needs a canonical Markdown-to-editor-content conversion path.
@@ -0,0 +1,9 @@
1
+ # Release Notes 2.3.18
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.3.18`
5
+ - Generated at: 2026-07-01T12:12:01.121Z
6
+
7
+ ## Included Drafts
8
+
9
+ - None
@@ -1,8 +1,8 @@
1
- # Release Notes 2.3.16
1
+ # Release Notes 2.3.18
2
2
 
3
3
  - Current ref: `HEAD`
4
- - Previous tag: `v2.3.16`
5
- - Generated at: 2026-06-30T11:57:52.659Z
4
+ - Previous tag: `v2.3.18`
5
+ - Generated at: 2026-07-01T12:12:01.121Z
6
6
 
7
7
  ## Included Drafts
8
8
 
@@ -1,9 +0,0 @@
1
- # Release Notes 2.3.16-sdk.1
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.3.16-sdk.0`
5
- - Generated at: 2026-06-30T03:25:33.572Z
6
-
7
- ## Included Drafts
8
-
9
- - None
@@ -1,9 +0,0 @@
1
- # Release Notes 2.3.16
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.3.16`
5
- - Generated at: 2026-06-30T11:57:52.659Z
6
-
7
- ## Included Drafts
8
-
9
- - None