@fusebase/fusebase-gate-sdk 2.3.32-sdk.3 → 2.3.34-sdk.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.
@@ -5,7 +5,7 @@
5
5
  * Domain: app-magic-links
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { ActivateAppMagicLinkResponseContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, orgIdInPathRequired, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "../types";
8
+ import type { ActivateAppMagicLinkResponseContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, ListAppMagicLinksResponseContract, orgIdInPathRequired, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract, RevokeAppMagicLinkResponseContract } from "../types";
9
9
  export declare class AppMagicLinksApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -43,6 +43,20 @@ export declare class AppMagicLinksApi {
43
43
  headers?: Record<string, string>;
44
44
  body: CreateAppMagicLinkRequestContract;
45
45
  }): Promise<CreateAppMagicLinkResponseContract>;
46
+ /**
47
+ * List app magic links (support/debug)
48
+ * Owner/admin support/debug flow. Lists the app's active (non-revoked) magic links, newest first, with an optional email filter. Never returns token material — only row metadata (email, mode, redirectPath, timestamps). Pair with revokeAppMagicLink to find and clear an orphaned invite. Requires app_magic_link.write and org access. appId is the Product id.
49
+ */
50
+ listAppMagicLinks(params: {
51
+ path: {
52
+ orgId: orgIdInPathRequired;
53
+ appId: string;
54
+ };
55
+ query?: {
56
+ email?: string;
57
+ };
58
+ headers?: Record<string, string>;
59
+ }): Promise<ListAppMagicLinksResponseContract>;
46
60
  /**
47
61
  * Request an app magic link (visitor self-service flow)
48
62
  * Unauthenticated visitor flow. The link is dispatched only when the email already has access to the app under its current accessPrincipals; otherwise the call is a no-op. Always returns 200 with `{ ok: true }` so the response cannot be used to enumerate emails or access. Apply per-IP rate limiting upstream of this call.
@@ -54,4 +68,16 @@ export declare class AppMagicLinksApi {
54
68
  headers?: Record<string, string>;
55
69
  body: RequestAppMagicLinkRequestContract;
56
70
  }): Promise<RequestAppMagicLinkResponseContract>;
71
+ /**
72
+ * Revoke an app magic link
73
+ * Owner/admin revoke flow. Soft-deletes the magic link identified by globalId so it can no longer be activated (activation then returns 404) and the recipient email can be invited again — the fix for orphaned invites that block re-invites for 24h. Returns 404 when the link does not exist under the org/app on the path or is already revoked. Requires app_magic_link.write and org access. appId is the Product id.
74
+ */
75
+ revokeAppMagicLink(params: {
76
+ path: {
77
+ orgId: orgIdInPathRequired;
78
+ appId: string;
79
+ globalId: string;
80
+ };
81
+ headers?: Record<string, string>;
82
+ }): Promise<RevokeAppMagicLinkResponseContract>;
57
83
  }
@@ -55,6 +55,21 @@ class AppMagicLinksApi {
55
55
  expectedContentType: "application/json",
56
56
  });
57
57
  }
58
+ /**
59
+ * List app magic links (support/debug)
60
+ * Owner/admin support/debug flow. Lists the app's active (non-revoked) magic links, newest first, with an optional email filter. Never returns token material — only row metadata (email, mode, redirectPath, timestamps). Pair with revokeAppMagicLink to find and clear an orphaned invite. Requires app_magic_link.write and org access. appId is the Product id.
61
+ */
62
+ async listAppMagicLinks(params) {
63
+ return this.client.request({
64
+ method: "GET",
65
+ path: "/:orgId/apps/:appId/magic-links",
66
+ pathParams: params.path,
67
+ query: params.query,
68
+ headers: params.headers,
69
+ opId: "listAppMagicLinks",
70
+ expectedContentType: "application/json",
71
+ });
72
+ }
58
73
  /**
59
74
  * Request an app magic link (visitor self-service flow)
60
75
  * Unauthenticated visitor flow. The link is dispatched only when the email already has access to the app under its current accessPrincipals; otherwise the call is a no-op. Always returns 200 with `{ ok: true }` so the response cannot be used to enumerate emails or access. Apply per-IP rate limiting upstream of this call.
@@ -70,5 +85,19 @@ class AppMagicLinksApi {
70
85
  expectedContentType: "application/json",
71
86
  });
72
87
  }
88
+ /**
89
+ * Revoke an app magic link
90
+ * Owner/admin revoke flow. Soft-deletes the magic link identified by globalId so it can no longer be activated (activation then returns 404) and the recipient email can be invited again — the fix for orphaned invites that block re-invites for 24h. Returns 404 when the link does not exist under the org/app on the path or is already revoked. Requires app_magic_link.write and org access. appId is the Product id.
91
+ */
92
+ async revokeAppMagicLink(params) {
93
+ return this.client.request({
94
+ method: "POST",
95
+ path: "/:orgId/apps/:appId/magic-links/:globalId/revoke",
96
+ pathParams: params.path,
97
+ headers: params.headers,
98
+ opId: "revokeAppMagicLink",
99
+ expectedContentType: "application/json",
100
+ });
101
+ }
73
102
  }
74
103
  exports.AppMagicLinksApi = AppMagicLinksApi;
@@ -122,6 +122,66 @@ export interface ActivateAppMagicLinkResponseContract {
122
122
  */
123
123
  appFeatureId: string;
124
124
  }
125
+ /**
126
+ * Response body for revokeAppMagicLink.
127
+ */
128
+ export interface RevokeAppMagicLinkResponseContract {
129
+ /** Always true on success. */
130
+ ok: boolean;
131
+ /** globalId of the revoked magic link. */
132
+ id: string;
133
+ /**
134
+ * Unix timestamp (seconds) when the link was revoked (its deletedAt value).
135
+ */
136
+ revokedAt: number;
137
+ }
138
+ /**
139
+ * A single app magic-link row in the support/debug listing. Never carries token
140
+ * material — only metadata safe for an owner/support view.
141
+ */
142
+ export interface AppMagicLinkSummaryContract {
143
+ /** globalId of the magic link row. */
144
+ id: string;
145
+ /**
146
+ * Recipient email the link was issued to.
147
+ * @nullable true
148
+ */
149
+ email?: string | null;
150
+ /** How the link was created: `invite` (owner/admin) or `self_service`. */
151
+ mode: string;
152
+ /**
153
+ * Relative app path the recipient lands on after activation, or null for root.
154
+ * @nullable true
155
+ */
156
+ redirectPath?: string | null;
157
+ /**
158
+ * Child app (feature) globalId the link is scoped to; null for legacy rows.
159
+ * @nullable true
160
+ */
161
+ appFeatureId?: string | null;
162
+ /**
163
+ * User id of the owner/admin who created the invite; null for self-service.
164
+ * @nullable true
165
+ */
166
+ createdByUserId?: number | null;
167
+ /** Unix timestamp (seconds) when the link expires. */
168
+ expiresAt: number;
169
+ /**
170
+ * Unix timestamp (seconds) of the most recent activation, or null if never
171
+ * activated.
172
+ * @nullable true
173
+ */
174
+ usedAt?: number | null;
175
+ /** Unix timestamp (seconds) when the link was created. */
176
+ createdAt: number;
177
+ }
178
+ /**
179
+ * Response body for listAppMagicLinks (support/debug).
180
+ */
181
+ export interface ListAppMagicLinksResponseContract {
182
+ /** Active (non-revoked) magic links for the product, newest first. */
183
+ links: AppMagicLinkSummaryContract[];
184
+ }
125
185
  /** A single invitee in a bulk app magic-link request. */
126
186
  export interface BulkAppMagicLinkInvitationContract {
127
187
  /**
@@ -7,7 +7,7 @@
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, BulkAppMagicLinkInvitationContract, BulkAppMagicLinkResultItemContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppClientInviteRequestContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract } from "./app-magic-link/app-magic-link";
10
+ export type { ActivateAppMagicLinkResponseContract, AppMagicLinkSummaryContract, BulkAppMagicLinkInvitationContract, BulkAppMagicLinkResultItemContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppClientInviteRequestContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, ListAppMagicLinksResponseContract, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract, RevokeAppMagicLinkResponseContract } 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";
@@ -317,6 +317,11 @@ export interface InviteToPortalRequestContract {
317
317
  * For orgRole "member" and "manager" this is always true and the field is ignored.
318
318
  */
319
319
  isFullAccess?: boolean;
320
+ /**
321
+ * Portal page the magic link should open, e.g. "/pricing" (must start with
322
+ * a single "/"). Defaults to the portal home page.
323
+ */
324
+ redirectPath?: string;
320
325
  }
321
326
  export interface InviteToPortalResponseContract {
322
327
  /** Magic link for direct portal access (no email confirmation needed). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusebase/fusebase-gate-sdk",
3
- "version": "2.3.32-sdk.3",
3
+ "version": "2.3.34-sdk.1",
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.34-sdk.1
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.3.34-sdk.1`
5
+ - Generated at: 2026-07-21T12:11:10.747Z
6
+
7
+ ## Included Drafts
8
+
9
+ - None
@@ -1,8 +1,8 @@
1
- # Release Notes 2.3.32-sdk.3
1
+ # Release Notes 2.3.34-sdk.1
2
2
 
3
3
  - Current ref: `HEAD`
4
- - Previous tag: `v2.3.32-sdk.3`
5
- - Generated at: 2026-07-16T08:03:54.968Z
4
+ - Previous tag: `v2.3.34-sdk.1`
5
+ - Generated at: 2026-07-21T12:11:10.747Z
6
6
 
7
7
  ## Included Drafts
8
8
 
@@ -1,9 +0,0 @@
1
- # Release Notes 2.3.32-sdk.3
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.3.32-sdk.3`
5
- - Generated at: 2026-07-16T08:03:54.968Z
6
-
7
- ## Included Drafts
8
-
9
- - None