@base44-preview/sdk 0.8.19-pr.129.4c7e3bb → 0.8.19-pr.130.914cbec

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/client.js CHANGED
@@ -108,12 +108,14 @@ export function createClient(config) {
108
108
  serverUrl,
109
109
  });
110
110
  const userModules = {
111
+ axiosClient,
111
112
  entities: createEntitiesModule({
112
113
  axios: axiosClient,
113
114
  appId,
114
115
  getSocket,
115
116
  }),
116
117
  integrations: createIntegrationsModule(axiosClient, appId),
118
+ connectors: createConnectorsModule(axiosClient, appId),
117
119
  auth: userAuthModule,
118
120
  functions: createFunctionsModule(functionsAxiosClient, appId),
119
121
  agents: createAgentsModule({
@@ -139,6 +141,7 @@ export function createClient(config) {
139
141
  },
140
142
  };
141
143
  const serviceRoleModules = {
144
+ axiosClient: serviceRoleAxiosClient,
142
145
  entities: createEntitiesModule({
143
146
  axios: serviceRoleAxiosClient,
144
147
  appId,
@@ -1,3 +1,4 @@
1
+ import type { AxiosInstance } from "axios";
1
2
  import type { EntitiesModule } from "./modules/entities.types.js";
2
3
  import type { IntegrationsModule } from "./modules/integrations.types.js";
3
4
  import type { AuthModule } from "./modules/auth.types.js";
@@ -82,6 +83,10 @@ export interface Base44Client {
82
83
  appLogs: AppLogsModule;
83
84
  /** {@link AuthModule | Auth module} for user authentication and management. */
84
85
  auth: AuthModule;
86
+ /** The underlying Axios instance used for API requests. Useful for making custom API calls with the same authentication and configuration as the SDK. */
87
+ axiosClient: AxiosInstance;
88
+ /** {@link ConnectorsModule | Connectors module} for OAuth token retrieval. */
89
+ connectors: ConnectorsModule;
85
90
  /** {@link EntitiesModule | Entities module} for CRUD operations on your data models. */
86
91
  entities: EntitiesModule;
87
92
  /** {@link FunctionsModule | Functions module} for invoking custom backend functions. */
@@ -117,6 +122,8 @@ export interface Base44Client {
117
122
  readonly asServiceRole: {
118
123
  /** {@link AgentsModule | Agents module} with elevated permissions. */
119
124
  agents: AgentsModule;
125
+ /** The underlying Axios instance used for service role API requests. Useful for making custom API calls with service role authentication. */
126
+ axiosClient: AxiosInstance;
120
127
  /** {@link AppLogsModule | App logs module} with elevated permissions. */
121
128
  appLogs: AppLogsModule;
122
129
  /** {@link ConnectorsModule | Connectors module} for OAuth token retrieval. */
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export type { Base44Client, CreateClientConfig, CreateClientOptions, Base44Error
6
6
  export * from "./types.js";
7
7
  export type { DeleteManyResult, DeleteResult, EntitiesModule, EntityHandler, EntityRecord, EntityTypeRegistry, ImportResult, RealtimeEventType, RealtimeEvent, RealtimeCallback, SortField, } from "./modules/entities.types.js";
8
8
  export type { AuthModule, LoginResponse, RegisterParams, VerifyOtpParams, ChangePasswordParams, ResetPasswordParams, User, } from "./modules/auth.types.js";
9
- export type { IntegrationsModule, IntegrationPackage, IntegrationEndpointFunction, CoreIntegrations, InvokeLLMParams, GenerateImageParams, GenerateImageResult, UploadFileParams, UploadFileResult, SendEmailParams, SendEmailResult, ExtractDataFromUploadedFileParams, ExtractDataFromUploadedFileResult, UploadPrivateFileParams, UploadPrivateFileResult, CreateFileSignedUrlParams, CreateFileSignedUrlResult, } from "./modules/integrations.types.js";
9
+ export type { IntegrationsModule, IntegrationEndpointFunction, CoreIntegrations, InvokeLLMParams, GenerateImageParams, GenerateImageResult, UploadFileParams, UploadFileResult, SendEmailParams, SendEmailResult, ExtractDataFromUploadedFileParams, ExtractDataFromUploadedFileResult, UploadPrivateFileParams, UploadPrivateFileResult, CreateFileSignedUrlParams, CreateFileSignedUrlResult, } from "./modules/integrations.types.js";
10
10
  export type { FunctionsModule, FunctionName, FunctionNameRegistry, } from "./modules/functions.types.js";
11
11
  export type { AgentsModule, AgentName, AgentNameRegistry, AgentConversation, AgentMessage, AgentMessageReasoning, AgentMessageToolCall, AgentMessageUsage, AgentMessageCustomContext, AgentMessageMetadata, CreateConversationParams, } from "./modules/agents.types.js";
12
12
  export type { AppLogsModule } from "./modules/app-logs.types.js";
@@ -170,6 +170,8 @@ export interface AgentsModuleConfig {
170
170
  * send messages, and subscribe to realtime updates. Conversations can be used
171
171
  * for chat interfaces, support systems, or any interactive AI app.
172
172
  *
173
+ * ## Key Features
174
+ *
173
175
  * The agents module enables you to:
174
176
  *
175
177
  * - **Create conversations** with agents defined in the app.
@@ -179,12 +181,16 @@ export interface AgentsModuleConfig {
179
181
  * - **Attach metadata** to conversations for tracking context, categories, priorities, or linking to external systems.
180
182
  * - **Generate WhatsApp connection URLs** for users to interact with agents through WhatsApp.
181
183
  *
184
+ * ## Conversation Structure
185
+ *
182
186
  * The agents module operates with a two-level hierarchy:
183
187
  *
184
188
  * 1. **Conversations**: Top-level containers that represent a dialogue with a specific agent. Each conversation has a unique ID, is associated with an agent by name, and belongs to the user who created it. Conversations can include optional metadata for tracking app-specific context like ticket IDs, categories, or custom fields.
185
189
  *
186
190
  * 2. **Messages**: Individual exchanges within a conversation. Each message has a role, content, and optional metadata like token usage, tool calls, file attachments, and reasoning information. Messages are stored as an array within their parent conversation.
187
191
  *
192
+ * ## Authentication Modes
193
+ *
188
194
  * This module is available to use with a client in all authentication modes:
189
195
  *
190
196
  * - **Anonymous or User authentication** (`base44.agents`): Access is scoped to the current user's permissions. Users must be authenticated to create and access conversations.
@@ -74,11 +74,15 @@ export type AnalyticsModuleOptions = {
74
74
  *
75
75
  * <Note> Analytics events tracked with this module appear as custom event cards in the [Analytics dashboard](/documentation/performance-and-seo/app-analytics).</Note>
76
76
  *
77
+ * ## Best Practices
78
+ *
77
79
  * When tracking events:
78
80
  *
79
81
  * - Choose clear, descriptive event names in snake_case like `signup_button_click` or `purchase_completed` rather than generic names like `click`.
80
82
  * - Include relevant context in your properties such as identifiers like `product_id`, measurements like `price`, and flags like `is_first_purchase`.
81
83
  *
84
+ * ## Authentication Modes
85
+ *
82
86
  * This module is only available in user authentication mode (`base44.analytics`).
83
87
  */
84
88
  export interface AnalyticsModule {
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * This module provides a method to log user activity. The logs are reflected in the Analytics page in the app dashboard.
5
5
  *
6
+ * ## Authentication Modes
7
+ *
6
8
  * This module is available to use with a client in all authentication modes.
7
9
  */
8
10
  export interface AppLogsModule {
@@ -37,9 +37,18 @@ export function createAuthModule(axios, functionsAxiosClient, appId, options) {
37
37
  loginWithProvider(provider, fromUrl = "/") {
38
38
  // Build the full redirect URL
39
39
  const redirectUrl = new URL(fromUrl, window.location.origin).toString();
40
- // Build the provider login URL (google is the default, so no provider path needed)
41
- const providerPath = provider === "google" ? "" : `/${provider}`;
42
- const loginUrl = `${options.appBaseUrl}/api/apps/auth${providerPath}/login?app_id=${appId}&from_url=${encodeURIComponent(redirectUrl)}`;
40
+ const queryParams = `app_id=${appId}&from_url=${encodeURIComponent(redirectUrl)}`;
41
+ // SSO uses a different URL structure with appId in the path
42
+ let authPath;
43
+ if (provider === "sso") {
44
+ authPath = `/apps/${appId}/auth/sso/login`;
45
+ }
46
+ else {
47
+ // Google is the default provider, so no provider path segment needed
48
+ const providerPath = provider === "google" ? "" : `/${provider}`;
49
+ authPath = `/apps/auth${providerPath}/login`;
50
+ }
51
+ const loginUrl = `${options.appBaseUrl}/api${authPath}?${queryParams}`;
43
52
  // Redirect to the provider login page
44
53
  window.location.href = loginUrl;
45
54
  },
@@ -96,6 +96,8 @@ export interface AuthModuleOptions {
96
96
  /**
97
97
  * Authentication module for managing user authentication and authorization. The module automatically stores tokens in local storage when available and manages authorization headers for API requests.
98
98
  *
99
+ * ## Features
100
+ *
99
101
  * This module provides comprehensive authentication functionality including:
100
102
  * - Email/password login and registration
101
103
  * - Token management
@@ -104,6 +106,8 @@ export interface AuthModuleOptions {
104
106
  * - OTP verification
105
107
  * - User invitations
106
108
  *
109
+ * ## Authentication Modes
110
+ *
107
111
  * The auth module is only available in user authentication mode (`base44.auth`).
108
112
  */
109
113
  export interface AuthModule {
@@ -181,8 +185,9 @@ export interface AuthModule {
181
185
  * - `'microsoft'` - {@link https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow | Microsoft OAuth}. Enable Microsoft in your app's authentication settings before specifying this provider.
182
186
  * - `'facebook'` - {@link https://developers.facebook.com/docs/facebook-login | Facebook Login}. Enable Facebook in your app's authentication settings before using.
183
187
  * - `'apple'` - {@link https://developer.apple.com/sign-in-with-apple/ | Sign in with Apple}. Enable Apple in your app's authentication settings before using this provider.
188
+ * - `'sso'` - Enterprise SSO. Enable SSO in your app's authentication settings before using this provider.
184
189
  *
185
- * @param provider - The authentication provider to use: `'google'`, `'microsoft'`, `'facebook'`, or `'apple'`.
190
+ * @param provider - The authentication provider to use: `'google'`, `'microsoft'`, `'facebook'`, `'apple'`, or `'sso'`.
186
191
  * @param fromUrl - URL to redirect to after successful authentication. Defaults to `'/'`.
187
192
  *
188
193
  * @example
@@ -202,6 +207,12 @@ export interface AuthModule {
202
207
  * // Apple
203
208
  * base44.auth.loginWithProvider('apple', '/dashboard');
204
209
  * ```
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * // SSO
214
+ * base44.auth.loginWithProvider('sso', '/dashboard');
215
+ * ```
205
216
  */
206
217
  loginWithProvider(provider: string, fromUrl?: string): void;
207
218
  /**
@@ -18,5 +18,19 @@ export function createConnectorsModule(axios, appId) {
18
18
  // @ts-expect-error
19
19
  return response.access_token;
20
20
  },
21
+ async initiate(integrationType) {
22
+ if (!integrationType || typeof integrationType !== "string") {
23
+ throw new Error("Integration type is required and must be a string");
24
+ }
25
+ const response = await axios.post(`/apps/${appId}/end-user-auth/initiate`, { integration_type: integrationType });
26
+ // @ts-expect-error
27
+ return response.redirect_url;
28
+ },
29
+ async disconnect(integrationType) {
30
+ if (!integrationType || typeof integrationType !== "string") {
31
+ throw new Error("Integration type is required and must be a string");
32
+ }
33
+ await axios.delete(`/apps/${appId}/end-user-auth/${integrationType}`);
34
+ },
21
35
  };
22
36
  }
@@ -20,6 +20,12 @@ export type ConnectorIntegrationType = keyof ConnectorIntegrationTypeRegistry ex
20
20
  export interface ConnectorAccessTokenResponse {
21
21
  access_token: string;
22
22
  }
23
+ /**
24
+ * Response from the connectors initiate endpoint.
25
+ */
26
+ export interface ConnectorInitiateResponse {
27
+ redirect_url: string;
28
+ }
23
29
  /**
24
30
  * Connectors module for managing OAuth tokens for external services.
25
31
  *
@@ -30,6 +36,8 @@ export interface ConnectorAccessTokenResponse {
30
36
  * the API calls you make. This is useful when you need custom API interactions that aren't
31
37
  * covered by Base44's pre-built integrations.
32
38
  *
39
+ * ## Authentication Modes
40
+ *
33
41
  * This module is only available to use with a client in service role authentication mode, which means it can only be used in backend environments.
34
42
  *
35
43
  * ## Dynamic Types
@@ -81,4 +89,39 @@ export interface ConnectorsModule {
81
89
  * ```
82
90
  */
83
91
  getAccessToken(integrationType: ConnectorIntegrationType): Promise<string>;
92
+ /**
93
+ * Initiates the end-user OAuth flow for a specific external integration type.
94
+ *
95
+ * Returns a redirect URL that the end user should be redirected to in order to
96
+ * authenticate with the external service.
97
+ *
98
+ * @param integrationType - The type of integration, such as `'googlecalendar'`, `'slack'`, or `'github'`.
99
+ * @returns Promise resolving to the redirect URL string.
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * // Initiate Google Calendar OAuth for the end user
104
+ * const redirectUrl = await base44.asServiceRole.connectors.initiate('googlecalendar');
105
+ *
106
+ * // Redirect the user to the OAuth provider
107
+ * res.redirect(redirectUrl);
108
+ * ```
109
+ */
110
+ initiate(integrationType: ConnectorIntegrationType): Promise<string>;
111
+ /**
112
+ * Disconnects an end-user's OAuth connection for a specific external integration type.
113
+ *
114
+ * Removes the stored OAuth credentials for the end user's connection to the
115
+ * specified external service.
116
+ *
117
+ * @param integrationType - The type of integration to disconnect, such as `'googlecalendar'`, `'slack'`, or `'github'`.
118
+ * @returns Promise resolving when the connection has been removed.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * // Disconnect Google Calendar for the end user
123
+ * await base44.asServiceRole.connectors.disconnect('googlecalendar');
124
+ * ```
125
+ */
126
+ disconnect(integrationType: ConnectorIntegrationType): Promise<void>;
84
127
  }
@@ -425,6 +425,14 @@ type DynamicEntitiesModule = {
425
425
  * - **Anonymous or User authentication** (`base44.entities`): Access is scoped to the current user's permissions. Anonymous users can only access public entities, while authenticated users can access entities they have permission to view or modify.
426
426
  * - **Service role authentication** (`base44.asServiceRole.entities`): Operations have elevated admin-level permissions. Can access all entities that the app's admin role has access to.
427
427
  *
428
+ * ## Entity Handlers
429
+ *
430
+ * An entity handler is the object you get when you access an entity through `base44.entities.EntityName`. Every entity in your app automatically gets a handler with CRUD methods for managing records.
431
+ *
432
+ * For example, `base44.entities.Task` is an entity handler for Task records, and `base44.entities.User` is an entity handler for User records. Each handler provides methods like `list()`, `create()`, `update()`, and `delete()`.
433
+ *
434
+ * You don't need to instantiate or import entity handlers. They're automatically available for every entity you create in your app.
435
+ *
428
436
  * ## Built-in User Entity
429
437
  *
430
438
  * Every app includes a built-in `User` entity that stores user account information. This entity has special security rules that can't be changed.
@@ -19,6 +19,8 @@ export type FunctionName = keyof FunctionNameRegistry extends never ? string : k
19
19
  *
20
20
  * This module allows you to invoke the custom backend functions defined in the app.
21
21
  *
22
+ * ## Authentication Modes
23
+ *
22
24
  * This module is available to use with a client in all authentication modes:
23
25
  *
24
26
  * - **Anonymous or User authentication** (`base44.functions`): Functions are invoked with the current user's permissions. Anonymous users invoke functions without authentication, while authenticated users invoke functions with their authentication context.
@@ -12,18 +12,25 @@ export type IntegrationEndpointFunction = (data: Record<string, any>) => Promise
12
12
  /**
13
13
  * A package containing integration endpoints.
14
14
  *
15
- * Provides dynamic access to integration endpoints within a package.
16
- * Each endpoint is accessed as a property that returns a function to invoke it.
15
+ * An integration package is a collection of endpoint functions indexed by endpoint name.
16
+ * Both `Core` and `custom` are integration packages that implement this structure.
17
17
  *
18
- * @example
18
+ * @example **Core package**
19
19
  * ```typescript
20
- * // Access endpoints dynamically
21
- * const result = await integrations.Core.SendEmail({
22
- * to: 'user@example.com',
23
- * subject: 'Hello',
24
- * body: 'Message'
20
+ * await base44.integrations.Core.InvokeLLM({
21
+ * prompt: 'Explain quantum computing',
22
+ * model: 'gpt-4'
25
23
  * });
26
24
  * ```
25
+ *
26
+ * @example **custom package**
27
+ * ```typescript
28
+ * await base44.integrations.custom.call(
29
+ * 'github',
30
+ * 'get:/repos/{owner}/{repo}',
31
+ * { pathParams: { owner: 'myorg', repo: 'myrepo' } }
32
+ * );
33
+ * ```
27
34
  */
28
35
  export type IntegrationPackage = {
29
36
  [endpointName: string]: IntegrationEndpointFunction;
@@ -324,6 +331,8 @@ export interface CoreIntegrations {
324
331
  *
325
332
  * This module provides access to integration methods for interacting with external services. Unlike the connectors module that gives you raw OAuth tokens, integrations provide pre-built functions that Base44 executes on your behalf.
326
333
  *
334
+ * ## Integration Types
335
+ *
327
336
  * There are two types of integrations:
328
337
  *
329
338
  * - **Built-in integrations** (`Core`): Pre-built functions provided by Base44 for common tasks such as AI-powered text generation, image creation, file uploads, and email. Access core integration methods using:
@@ -331,12 +340,14 @@ export interface CoreIntegrations {
331
340
  * base44.integrations.Core.FunctionName(params)
332
341
  * ```
333
342
  *
334
- * - **Custom integrations** (`custom`): Pre-configured external APIs. Custom integration calls are proxied through Base44's backend, so credentials are never exposed to the frontend. Access custom integration methods using:
343
+ * - **Custom workspace integrations** (`custom`): Pre-configured external APIs set up by workspace administrators. Workspace integration calls are proxied through Base44's backend, so credentials are never exposed to the frontend. Access custom workspace integration methods using:
335
344
  * ```
336
345
  * base44.integrations.custom.call(slug, operationId, params)
337
346
  * ```
338
347
  *
339
- * <Info>To call a custom integration, it must be pre-configured by a workspace administrator who imports an OpenAPI specification.</Info>
348
+ * <Info>To call a custom workspace integration, it must be pre-configured by a workspace administrator who imports an OpenAPI specification. Learn more about [custom workspace integrations](/documentation/integrations/managing-workspace-integrations).</Info>
349
+ *
350
+ * ## Authentication Modes
340
351
  *
341
352
  * This module is available to use with a client in all authentication modes:
342
353
  *
@@ -346,18 +357,52 @@ export interface CoreIntegrations {
346
357
  export type IntegrationsModule = {
347
358
  /**
348
359
  * Core package containing built-in Base44 integration functions.
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * const response = await base44.integrations.Core.InvokeLLM({
364
+ * prompt: 'Explain quantum computing',
365
+ * model: 'gpt-4'
366
+ * });
367
+ * ```
349
368
  */
350
369
  Core: CoreIntegrations;
351
370
  /**
352
- * Custom integrations module for calling pre-configured external APIs.
371
+ * Workspace integrations module for calling pre-configured external APIs.
372
+ *
373
+ * @example
374
+ * ```typescript
375
+ * const result = await base44.integrations.custom.call(
376
+ * 'github',
377
+ * 'get:/repos/{owner}/{repo}',
378
+ * { pathParams: { owner: 'myorg', repo: 'myrepo' } }
379
+ * );
380
+ * ```
353
381
  */
354
382
  custom: CustomIntegrationsModule;
355
383
  } & {
356
384
  /**
357
385
  * Access to additional integration packages.
358
386
  *
359
- * Additional integration packages may be added in the future and will be
360
- * accessible using the same pattern as Core.
387
+ * Allows accessing integration packages as properties. This enables both `Core` and `custom` packages,
388
+ * as well as any future integration packages that may be added.
389
+ *
390
+ * @example **Use Core integrations**
391
+ * ```typescript
392
+ * const response = await base44.integrations.Core.InvokeLLM({
393
+ * prompt: 'Explain quantum computing',
394
+ * model: 'gpt-4'
395
+ * });
396
+ * ```
397
+ *
398
+ * @example **Use custom integrations**
399
+ * ```typescript
400
+ * const result = await base44.integrations.custom.call(
401
+ * 'github',
402
+ * 'get:/repos/{owner}/{repo}',
403
+ * { pathParams: { owner: 'myorg', repo: 'myrepo' } }
404
+ * );
405
+ * ```
361
406
  */
362
407
  [packageName: string]: IntegrationPackage;
363
408
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44-preview/sdk",
3
- "version": "0.8.19-pr.129.4c7e3bb",
3
+ "version": "0.8.19-pr.130.914cbec",
4
4
  "description": "JavaScript SDK for Base44 API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",