@fusebase/fusebase-gate-sdk 2.3.28-sdk.1 → 2.3.28-sdk.3

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: app-magic-links
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { ActivateAppMagicLinkResponseContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, orgIdInPathRequired, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "../types";
8
+ import type { ActivateAppMagicLinkResponseContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, orgIdInPathRequired, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "../types";
9
9
  export declare class AppMagicLinksApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -19,6 +19,18 @@ export declare class AppMagicLinksApi {
19
19
  };
20
20
  headers?: Record<string, string>;
21
21
  }): Promise<ActivateAppMagicLinkResponseContract>;
22
+ /**
23
+ * Create app magic links for multiple users in one call
24
+ * Invites a batch of users to a single app in one request, replacing N sequential createAppMagicLink calls. Invites are processed with bounded concurrency (default 5, max 5); the rest are queued. With background=false (default) the response waits for all invites and returns aggregated per-invitation results (status='completed'). With background=true the response returns immediately (status='processing') and invites run in the background without blocking the caller. Per-invitation redirectPath/addToAccessPrincipals semantics match createAppMagicLink; a single failed invitee never aborts the batch. Requires app_magic_link.write and org access.
25
+ */
26
+ bulkCreateAppMagicLinks(params: {
27
+ path: {
28
+ orgId: orgIdInPathRequired;
29
+ appId: string;
30
+ };
31
+ headers?: Record<string, string>;
32
+ body: BulkCreateAppMagicLinksRequestContract;
33
+ }): Promise<BulkCreateAppMagicLinksResponseContract>;
22
34
  /**
23
35
  * Create an app magic link (invite flow)
24
36
  * Owner/admin invite flow. Issues a 24h magic link for the recipient email and dispatches it via the magic_link_app email template. When addToAccessPrincipals is true (default), provisions a brand-new user record if needed and appends a user principal to every feature of the app. Requires app_magic_link.write and org access.
@@ -25,6 +25,21 @@ class AppMagicLinksApi {
25
25
  expectedContentType: "application/json",
26
26
  });
27
27
  }
28
+ /**
29
+ * Create app magic links for multiple users in one call
30
+ * Invites a batch of users to a single app in one request, replacing N sequential createAppMagicLink calls. Invites are processed with bounded concurrency (default 5, max 5); the rest are queued. With background=false (default) the response waits for all invites and returns aggregated per-invitation results (status='completed'). With background=true the response returns immediately (status='processing') and invites run in the background without blocking the caller. Per-invitation redirectPath/addToAccessPrincipals semantics match createAppMagicLink; a single failed invitee never aborts the batch. Requires app_magic_link.write and org access.
31
+ */
32
+ async bulkCreateAppMagicLinks(params) {
33
+ return this.client.request({
34
+ method: "POST",
35
+ path: "/:orgId/apps/:appId/magic-links/bulk",
36
+ pathParams: params.path,
37
+ headers: params.headers,
38
+ body: params.body,
39
+ opId: "bulkCreateAppMagicLinks",
40
+ expectedContentType: "application/json",
41
+ });
42
+ }
28
43
  /**
29
44
  * Create an app magic link (invite flow)
30
45
  * Owner/admin invite flow. Issues a 24h magic link for the recipient email and dispatches it via the magic_link_app email template. When addToAccessPrincipals is true (default), provisions a brand-new user record if needed and appends a user principal to every feature of the app. Requires app_magic_link.write and org access.
@@ -5,7 +5,7 @@
5
5
  * Domain: org-users
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { ClientAccountScheduledDeletionRequestContract, ClientAccountScheduledDeletionResponseContract, orgIdInPathRequired, OrgMemberRemoveResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserIdInPathRequired, OrgUserListResponseContract, OrgUserWorkspaceIdInPathRequired, WorkspaceMemberRemoveResponseContract } from "../types";
8
+ import type { ClientAccountScheduledDeletionRequestContract, ClientAccountScheduledDeletionResponseContract, orgIdInPathRequired, OrgMemberRemoveResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserIdInPathRequired, OrgUserListResponseContract, OrgUserWorkspaceIdInPathRequired, OrgWorkspaceMemberListResponseContract, WorkspaceMemberRemoveResponseContract } from "../types";
9
9
  export declare class OrgUsersApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -30,6 +30,28 @@ export declare class OrgUsersApi {
30
30
  };
31
31
  headers?: Record<string, string>;
32
32
  }): Promise<OrgUserListResponseContract>;
33
+ /**
34
+ * List portal members
35
+ * Returns the members of a portal by its underlying workspaceId. Portal membership is currently represented by workspace membership (same semantics as removePortalMember), so Gate validates the workspace belongs to `orgId` and returns its members, each including the workspaceMember `id` (globalId). Requires org.members.read and org access.
36
+ */
37
+ listPortalMembers(params: {
38
+ path: {
39
+ orgId: orgIdInPathRequired;
40
+ workspaceId: OrgUserWorkspaceIdInPathRequired;
41
+ };
42
+ headers?: Record<string, string>;
43
+ }): Promise<OrgWorkspaceMemberListResponseContract>;
44
+ /**
45
+ * List workspace members
46
+ * Returns the members of a single workspace scoped to the organization. Gate validates that the workspace belongs to `orgId`, then calls org-service. Each member includes the workspaceMember `id` (globalId) needed by removeWorkspaceMember. Requires org.members.read and org access.
47
+ */
48
+ listWorkspaceMembers(params: {
49
+ path: {
50
+ orgId: orgIdInPathRequired;
51
+ workspaceId: OrgUserWorkspaceIdInPathRequired;
52
+ };
53
+ headers?: Record<string, string>;
54
+ }): Promise<OrgWorkspaceMemberListResponseContract>;
33
55
  /**
34
56
  * Remove organization member
35
57
  * Removes an organization member by numeric userId. Gate resolves the internal orgMember.globalId before calling org-service, and org-service cleans up workspace/group memberships for that org. Requires org.members.write and org access.
@@ -40,6 +40,34 @@ class OrgUsersApi {
40
40
  expectedContentType: "application/json",
41
41
  });
42
42
  }
43
+ /**
44
+ * List portal members
45
+ * Returns the members of a portal by its underlying workspaceId. Portal membership is currently represented by workspace membership (same semantics as removePortalMember), so Gate validates the workspace belongs to `orgId` and returns its members, each including the workspaceMember `id` (globalId). Requires org.members.read and org access.
46
+ */
47
+ async listPortalMembers(params) {
48
+ return this.client.request({
49
+ method: "GET",
50
+ path: "/:orgId/users/portals/:workspaceId/members",
51
+ pathParams: params.path,
52
+ headers: params.headers,
53
+ opId: "listPortalMembers",
54
+ expectedContentType: "application/json",
55
+ });
56
+ }
57
+ /**
58
+ * List workspace members
59
+ * Returns the members of a single workspace scoped to the organization. Gate validates that the workspace belongs to `orgId`, then calls org-service. Each member includes the workspaceMember `id` (globalId) needed by removeWorkspaceMember. Requires org.members.read and org access.
60
+ */
61
+ async listWorkspaceMembers(params) {
62
+ return this.client.request({
63
+ method: "GET",
64
+ path: "/:orgId/users/workspaces/:workspaceId/members",
65
+ pathParams: params.path,
66
+ headers: params.headers,
67
+ opId: "listWorkspaceMembers",
68
+ expectedContentType: "application/json",
69
+ });
70
+ }
43
71
  /**
44
72
  * Remove organization member
45
73
  * Removes an organization member by numeric userId. Gate resolves the internal orgMember.globalId before calling org-service, and org-service cleans up workspace/group memberships for that org. Requires org.members.write and org access.
@@ -5,7 +5,7 @@
5
5
  * Domain: portals
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
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";
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, PublishPortalDraftResponseContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract } from "../types";
9
9
  export declare class PortalsApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -173,6 +173,17 @@ export declare class PortalsApi {
173
173
  };
174
174
  headers?: Record<string, string>;
175
175
  }): Promise<OrgPortalListResponseContract>;
176
+ /**
177
+ * Publish a portal's staged draft
178
+ * Publishes all staged changes in the portal's customizer draft to the live portal, applying them through the same content pipeline the customizer's Publish button uses. Use this to make an agent's previously staged content/settings ops (folders, pages, blocks, access mode, custom code) visible to clients without opening the customizer. Returns 400 if the draft is empty and 409 if the portal was published elsewhere since the draft was based (refresh the draft first). Requires portals.write access.
179
+ */
180
+ publishPortalDraft(params: {
181
+ path: {
182
+ orgId: orgIdInPathRequired;
183
+ portalId: globalIdInPathRequired;
184
+ };
185
+ headers?: Record<string, string>;
186
+ }): Promise<PublishPortalDraftResponseContract>;
176
187
  /**
177
188
  * Update portal access mode
178
189
  * Sets the portal access mode: 'open' (anyone), 'invite-only' (invited users only), 'email' (visitor enters an email, no verification), or 'email-verified' (email with confirmation). 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 staged access mode and the draft branch/seq. Requires portals.write access.
@@ -218,6 +218,20 @@ class PortalsApi {
218
218
  expectedContentType: "application/json",
219
219
  });
220
220
  }
221
+ /**
222
+ * Publish a portal's staged draft
223
+ * Publishes all staged changes in the portal's customizer draft to the live portal, applying them through the same content pipeline the customizer's Publish button uses. Use this to make an agent's previously staged content/settings ops (folders, pages, blocks, access mode, custom code) visible to clients without opening the customizer. Returns 400 if the draft is empty and 409 if the portal was published elsewhere since the draft was based (refresh the draft first). Requires portals.write access.
224
+ */
225
+ async publishPortalDraft(params) {
226
+ return this.client.request({
227
+ method: "POST",
228
+ path: "/:orgId/portals/:portalId/publish",
229
+ pathParams: params.path,
230
+ headers: params.headers,
231
+ opId: "publishPortalDraft",
232
+ expectedContentType: "application/json",
233
+ });
234
+ }
221
235
  /**
222
236
  * Update portal access mode
223
237
  * Sets the portal access mode: 'open' (anyone), 'invite-only' (invited users only), 'email' (visitor enters an email, no verification), or 'email-verified' (email with confirmation). 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 staged access mode and the draft branch/seq. Requires portals.write access.
@@ -39,6 +39,24 @@ export interface CreateAppMagicLinkResponseContract {
39
39
  */
40
40
  expiresAt: number;
41
41
  }
42
+ /**
43
+ * Request body for createAppClientInviteMagicLink (client→client invite flow).
44
+ * No role/access selectors: the invitee is always a client inheriting the
45
+ * inviter's app scope, enforced downstream in nimbus-ai.
46
+ */
47
+ export interface CreateAppClientInviteRequestContract {
48
+ /**
49
+ * Recipient email address. The link is dispatched to this address.
50
+ * @format email
51
+ */
52
+ email: string;
53
+ /**
54
+ * Relative app path to land on after activation (e.g. /proposals/abc).
55
+ * Omit for root.
56
+ * @nullable true
57
+ */
58
+ redirectPath?: string | null;
59
+ }
42
60
  /**
43
61
  * Request body for requestAppMagicLink (visitor self-service flow).
44
62
  */
@@ -104,3 +122,68 @@ export interface ActivateAppMagicLinkResponseContract {
104
122
  */
105
123
  appFeatureId: string;
106
124
  }
125
+ /** A single invitee in a bulk app magic-link request. */
126
+ export interface BulkAppMagicLinkInvitationContract {
127
+ /**
128
+ * Recipient email address. The link is dispatched to this address.
129
+ * @format email
130
+ */
131
+ email: string;
132
+ /**
133
+ * Relative app path to land on after activation (e.g. /proposals/abc).
134
+ * Omit for root.
135
+ * @nullable true
136
+ */
137
+ redirectPath?: string | null;
138
+ /**
139
+ * When true (default), append a user principal to every feature of the app
140
+ * and provision a new user record if the email is not yet known.
141
+ * When false, the user must already exist or the invite fails with NotFound.
142
+ */
143
+ addToAccessPrincipals?: boolean;
144
+ }
145
+ export interface BulkCreateAppMagicLinksRequestContract {
146
+ /** Users to invite to the app in a single call. */
147
+ invitations: BulkAppMagicLinkInvitationContract[];
148
+ /**
149
+ * Max number of invites processed in parallel.
150
+ * Default 5, clamped to the 1..5 range; the rest are queued.
151
+ */
152
+ concurrency?: number;
153
+ /**
154
+ * When true, respond immediately ("processing") and run the invites in the
155
+ * background without blocking the caller. Default false: wait for all
156
+ * invites and return aggregated per-invitation results ("completed").
157
+ */
158
+ background?: boolean;
159
+ }
160
+ /** Per-invitation outcome in a completed bulk app magic-link request. */
161
+ export interface BulkAppMagicLinkResultItemContract {
162
+ email: string;
163
+ status: "success" | "error";
164
+ /** Present on success. globalId of the magic link row. */
165
+ id?: string;
166
+ /** Present on success. Fully qualified magic link URL. */
167
+ magicLinkUrl?: string;
168
+ /** Present on success. Unix timestamp (seconds) when the link expires. */
169
+ expiresAt?: number;
170
+ /** Present on error. Failure reason. */
171
+ error?: string;
172
+ }
173
+ export interface BulkCreateAppMagicLinksResponseContract {
174
+ /** Total number of invitations received. */
175
+ total: number;
176
+ /**
177
+ * "completed" — invites finished synchronously, `results` is populated.
178
+ * "processing" — invites accepted and running in the background.
179
+ */
180
+ status: "completed" | "processing";
181
+ /** Background mode only: number of invitations accepted for processing. */
182
+ accepted?: number;
183
+ /** Completed mode only: count of successful invites. */
184
+ succeeded?: number;
185
+ /** Completed mode only: count of failed invites. */
186
+ failed?: number;
187
+ /** Completed mode only: per-invitation results, in request order. */
188
+ results?: BulkAppMagicLinkResultItemContract[];
189
+ }
@@ -7,20 +7,20 @@
7
7
  export type { AuthenticatedUserSummaryContract, MyOrgAccessResponseContract } from "./access/access";
8
8
  export type { AppApiOperationContract, AppApiOperationListResponseContract, CallAppApiRequestContract, CallAppApiResponseContract, PublishedAppContract, PublishedAppListResponseContract, VerifyAppApiContractsRequestContract, VerifyAppApiContractsResponseContract, VerifyCaseResultContract } from "./app-api/app-api";
9
9
  export type { AppPortalEmbedContract, ListAppPortalEmbedsResponseContract } from "./app-embed-targets/app-embed-targets";
10
- export type { ActivateAppMagicLinkResponseContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "./app-magic-link/app-magic-link";
10
+ export type { ActivateAppMagicLinkResponseContract, BulkAppMagicLinkInvitationContract, BulkAppMagicLinkResultItemContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppClientInviteRequestContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "./app-magic-link/app-magic-link";
11
11
  export * from "./billing/billing";
12
12
  export type { OrgEmailSendRequestContract, OrgEmailSendResponseContract } from "./email/email";
13
13
  export * from "./file/file";
14
14
  export type { FusebaseAuthChallengeContract, FusebaseAuthChallengeRequestContract, FusebaseAuthChallengeResponseContract, FusebaseAuthConflictErrorBodyContract, FusebaseAuthLoginRequestContract, FusebaseAuthLoginResponseContract, FusebaseAuthLogoutResponseContract, FusebaseAuthPasswordResetRequestContract, FusebaseAuthPasswordResetResponseContract, FusebaseAuthPasswordRestoreKeyResponseContract, FusebaseAuthPasswordRestoreRequestContract, FusebaseAuthPasswordRestoreResponseContract, FusebaseAuthRegisterMemberRequestContract, FusebaseAuthRegisterMemberResponseContract, FusebaseAuthRegisterRequestContract, FusebaseAuthRegisterResponseContract, FusebaseAuthSessionContract } from "./fusebase-auth/fusebase-auth";
15
15
  export * from "./isolated-store/isolated-store";
16
16
  export * from "./mcp-manager/mcp-manager";
17
- export type { MeAuthContract, MeOrgGroupContract, MeResponseContract, MeScopeContract, MeUserContract } from "./me/me";
17
+ export type { MeAuthContract, MeOrgGroupContract, MePreferencesContract, MeResponseContract, MeScopeContract, MeUserContract } from "./me/me";
18
18
  export * from "./note/note";
19
19
  export * from "./org-group/org-group";
20
- export type { ClientAccountScheduledDeletionRequestContract, ClientAccountScheduledDeletionResponseContract, CreateWorkspaceRequestContract, OrgInviteContract, OrgMagicLinkContract, OrgMemberRemoveResponseContract, OrgPortalContract, OrgPortalListResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserContract, OrgUserIdInPathRequired, OrgUserListResponseContract, OrgUserWorkspaceIdInPathRequired, OrgWorkspaceContract, OrgWorkspaceInviteContract, OrgWorkspaceListResponseContract, OrgWorkspaceMemberContract, WorkspaceMemberRemoveResponseContract } from "./org-user/org-user";
20
+ export type { ClientAccountScheduledDeletionRequestContract, ClientAccountScheduledDeletionResponseContract, CreateWorkspaceRequestContract, OrgInviteContract, OrgMagicLinkContract, OrgMemberRemoveResponseContract, OrgPortalContract, OrgPortalListResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserContract, OrgUserIdInPathRequired, OrgUserListResponseContract, OrgUserWorkspaceIdInPathRequired, OrgWorkspaceContract, OrgWorkspaceInviteContract, OrgWorkspaceListResponseContract, OrgWorkspaceMemberContract, OrgWorkspaceMemberListResponseContract, WorkspaceMemberRemoveResponseContract } 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, 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";
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, PublishPortalDraftResponseContract, 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";
@@ -9,6 +9,21 @@ export interface MeOrgGroupContract {
9
9
  export interface MeUserContract {
10
10
  id: number | null;
11
11
  }
12
+ export type MeTimeFormat = "12h" | "24h";
13
+ export interface MePreferencesContract {
14
+ /** IANA timezone name, e.g. "Europe/Moscow" or "America/New_York". */
15
+ timezone: string | null;
16
+ /** Current UTC offset for the timezone at request time, e.g. "+03:00". */
17
+ timezoneOffset: string | null;
18
+ /**
19
+ * Resolved clock preference derived from the user's `dateTimeLocale`.
20
+ * Defaults to `12h` when the locale is unset or unresolvable (matches the
21
+ * webnotes client's `en-US` default).
22
+ */
23
+ timeFormat: MeTimeFormat;
24
+ /** Raw locale used for date/time display, e.g. "en-US" (12h) or "en-GB" (24h). */
25
+ dateTimeLocale: string | null;
26
+ }
12
27
  export interface MeAuthContract {
13
28
  type: string;
14
29
  source: string | null;
@@ -23,4 +38,9 @@ export interface MeResponseContract {
23
38
  authenticated: true;
24
39
  user: MeUserContract;
25
40
  auth: MeAuthContract;
41
+ /**
42
+ * Locale/display preferences for the authenticated user. `null` when the
43
+ * auth context is not bound to a user (e.g. an app token without a user).
44
+ */
45
+ preferences: MePreferencesContract | null;
26
46
  }
@@ -113,6 +113,9 @@ export interface OrgWorkspaceMemberContract {
113
113
  privileges?: string[] | null;
114
114
  magicLink?: string | null;
115
115
  }
116
+ export interface OrgWorkspaceMemberListResponseContract {
117
+ members: OrgWorkspaceMemberContract[];
118
+ }
116
119
  export interface OrgMagicLinkContract {
117
120
  id: string;
118
121
  type: string;
@@ -72,6 +72,18 @@ export interface CreatePortalFolderResponseContract {
72
72
  */
73
73
  staged: boolean;
74
74
  }
75
+ export interface PublishPortalDraftResponseContract {
76
+ /** Id of the draft branch that was published (now archived). */
77
+ branchId: string;
78
+ /** Id of the fresh empty draft branch that replaced it. */
79
+ newBranchId: string;
80
+ /** Number of change events applied to the published portal. */
81
+ appliedEventCount: number;
82
+ /** Unix timestamp of the publish. */
83
+ lastPublishedAt: number;
84
+ /** Always true: the staged draft is now live on the portal. */
85
+ published: boolean;
86
+ }
75
87
  export interface CreatePortalPageWithNoteRequestContract {
76
88
  /** Title for the new page (also used as the backing Fusebase note title). */
77
89
  title: string;
@@ -152,11 +164,13 @@ export interface AddPortalBlockRequestContract {
152
164
  /** Optional bricks for `flexible` blocks. */
153
165
  bricks?: unknown[];
154
166
  /**
155
- * Optional type-specific fields merged into the staged block verbatim, e.g.
167
+ * Optional type-specific fields for the staged block, e.g. flat strings
156
168
  * `embedType`/`content`/`contentUrl` for embed, `image`/`link` for info,
157
169
  * `sourcePortalId`/`sourcePageId`/`sourceBlockId` for projection,
158
170
  * `taskListIds` for task-list. Also overrides scaffold defaults (colspan,
159
- * rowspan, …) when provided.
171
+ * rowspan, …) when provided. Every field is validated against the block's
172
+ * real customizer shape — an unknown field or a wrong-typed value (e.g. an
173
+ * object where a flat string is expected) is rejected with 400.
160
174
  */
161
175
  properties?: Record<string, unknown>;
162
176
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusebase/fusebase-gate-sdk",
3
- "version": "2.3.28-sdk.1",
3
+ "version": "2.3.28-sdk.3",
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,9 @@
1
+ # Release Notes 2.3.28-sdk.3
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.3.28-sdk.3`
5
+ - Generated at: 2026-07-09T11:27:39.832Z
6
+
7
+ ## Included Drafts
8
+
9
+ - None
@@ -1,8 +1,8 @@
1
- # Release Notes 2.3.28-sdk.1
1
+ # Release Notes 2.3.28-sdk.3
2
2
 
3
3
  - Current ref: `HEAD`
4
- - Previous tag: `v2.3.28-sdk.1`
5
- - Generated at: 2026-07-06T11:24:32.041Z
4
+ - Previous tag: `v2.3.28-sdk.3`
5
+ - Generated at: 2026-07-09T11:27:39.832Z
6
6
 
7
7
  ## Included Drafts
8
8
 
@@ -1,9 +0,0 @@
1
- # Release Notes 2.3.28-sdk.1
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.3.28-sdk.1`
5
- - Generated at: 2026-07-06T11:24:32.041Z
6
-
7
- ## Included Drafts
8
-
9
- - None