From 25684b1959cbdb22921c22288945f24a5f141d3c Mon Sep 17 00:00:00 2001 From: Roy Miloh Date: Thu, 9 Oct 2025 15:38:51 -0300 Subject: [PATCH 1/4] external auth support --- src/client.ts | 2 ++ src/modules/external-auth.ts | 37 ++++++++++++++++++++++++++++++ src/modules/external-auth.types.ts | 5 ++++ src/modules/types.ts | 3 ++- 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/modules/external-auth.ts create mode 100644 src/modules/external-auth.types.ts diff --git a/src/client.ts b/src/client.ts index 8f7d675..504337e 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3,6 +3,7 @@ import { createEntitiesModule } from "./modules/entities.js"; import { createIntegrationsModule } from "./modules/integrations.js"; import { createAuthModule } from "./modules/auth.js"; import { createSsoModule } from "./modules/sso.js"; +import { createExternalAuthModule } from "./modules/external-auth.js"; import { getAccessToken } from "./utils/auth-utils.js"; import { createFunctionsModule } from "./modules/functions.js"; import { createAgentsModule } from "./modules/agents.js"; @@ -125,6 +126,7 @@ export function createClient(config: { entities: createEntitiesModule(serviceRoleAxiosClient, appId), integrations: createIntegrationsModule(serviceRoleAxiosClient, appId), sso: createSsoModule(serviceRoleAxiosClient, appId, token), + externalAuth: createExternalAuthModule(serviceRoleAxiosClient, appId), functions: createFunctionsModule(serviceRoleFunctionsAxiosClient, appId), agents: createAgentsModule({ axios: serviceRoleAxiosClient, diff --git a/src/modules/external-auth.ts b/src/modules/external-auth.ts new file mode 100644 index 0000000..6f97d69 --- /dev/null +++ b/src/modules/external-auth.ts @@ -0,0 +1,37 @@ +import { AxiosInstance } from "axios"; +import { + ExternalAuthIntegrationType, + ExternalAuthAccessTokenResponse, +} from "./external-auth.types.js"; + +/** + * Creates the External Auth module for the Base44 SDK + * @param axios - Axios instance (should be service role client) + * @param appId - Application ID + * @returns External Auth module + */ +export function createExternalAuthModule(axios: AxiosInstance, appId: string) { + return { + /** + * Retrieve an access token for a given integration type + * @param integrationType - The integration type to get access token for + * @returns Access token response + */ + async getAccessToken( + integrationType: ExternalAuthIntegrationType + ): Promise { + if (!integrationType || typeof integrationType !== "string") { + throw new Error( + "Integration type is required and must be a string" + ); + } + + const response = await axios.get( + `/apps/${appId}/external-auth/tokens/${integrationType}` + ); + + // @ts-expect-error + return response.access_token; + }, + }; +} diff --git a/src/modules/external-auth.types.ts b/src/modules/external-auth.types.ts new file mode 100644 index 0000000..955ce4a --- /dev/null +++ b/src/modules/external-auth.types.ts @@ -0,0 +1,5 @@ +export type ExternalAuthIntegrationType = string; + +export type ExternalAuthAccessTokenResponse = { + access_token: string; +}; diff --git a/src/modules/types.ts b/src/modules/types.ts index 8f24e94..fdd1da0 100644 --- a/src/modules/types.ts +++ b/src/modules/types.ts @@ -1,2 +1,3 @@ export * from "./app.types.js"; -export * from "./agents.types.js"; \ No newline at end of file +export * from "./agents.types.js"; +export * from "./external-auth.types.js"; \ No newline at end of file From b53c4f3d85431a39a4489fe1a8474b7cabd4442b Mon Sep 17 00:00:00 2001 From: Roy Miloh Date: Fri, 24 Oct 2025 18:20:32 -0300 Subject: [PATCH 2/4] mv --- src/client.ts | 4 ++-- .../{external-auth.ts => app-connections.ts} | 20 +++++++++---------- src/modules/app-connections.types.ts | 5 +++++ src/modules/external-auth.types.ts | 5 ----- src/modules/types.ts | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) rename src/modules/{external-auth.ts => app-connections.ts} (55%) create mode 100644 src/modules/app-connections.types.ts delete mode 100644 src/modules/external-auth.types.ts diff --git a/src/client.ts b/src/client.ts index 504337e..6d713e2 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3,7 +3,7 @@ import { createEntitiesModule } from "./modules/entities.js"; import { createIntegrationsModule } from "./modules/integrations.js"; import { createAuthModule } from "./modules/auth.js"; import { createSsoModule } from "./modules/sso.js"; -import { createExternalAuthModule } from "./modules/external-auth.js"; +import { createAppConnectionsModule } from "./modules/app-connections.js"; import { getAccessToken } from "./utils/auth-utils.js"; import { createFunctionsModule } from "./modules/functions.js"; import { createAgentsModule } from "./modules/agents.js"; @@ -126,7 +126,7 @@ export function createClient(config: { entities: createEntitiesModule(serviceRoleAxiosClient, appId), integrations: createIntegrationsModule(serviceRoleAxiosClient, appId), sso: createSsoModule(serviceRoleAxiosClient, appId, token), - externalAuth: createExternalAuthModule(serviceRoleAxiosClient, appId), + appConnections: createAppConnectionsModule(serviceRoleAxiosClient, appId), functions: createFunctionsModule(serviceRoleFunctionsAxiosClient, appId), agents: createAgentsModule({ axios: serviceRoleAxiosClient, diff --git a/src/modules/external-auth.ts b/src/modules/app-connections.ts similarity index 55% rename from src/modules/external-auth.ts rename to src/modules/app-connections.ts index 6f97d69..a811603 100644 --- a/src/modules/external-auth.ts +++ b/src/modules/app-connections.ts @@ -1,16 +1,16 @@ import { AxiosInstance } from "axios"; import { - ExternalAuthIntegrationType, - ExternalAuthAccessTokenResponse, -} from "./external-auth.types.js"; + AppConnectionIntegrationType, + AppConnectionAccessTokenResponse, +} from "./app-connections.types.js"; /** - * Creates the External Auth module for the Base44 SDK + * Creates the App Connections module for the Base44 SDK * @param axios - Axios instance (should be service role client) * @param appId - Application ID - * @returns External Auth module + * @returns App Connections module */ -export function createExternalAuthModule(axios: AxiosInstance, appId: string) { +export function createAppConnectionsModule(axios: AxiosInstance, appId: string) { return { /** * Retrieve an access token for a given integration type @@ -18,16 +18,16 @@ export function createExternalAuthModule(axios: AxiosInstance, appId: string) { * @returns Access token response */ async getAccessToken( - integrationType: ExternalAuthIntegrationType - ): Promise { + integrationType: AppConnectionIntegrationType + ): Promise { if (!integrationType || typeof integrationType !== "string") { throw new Error( "Integration type is required and must be a string" ); } - const response = await axios.get( - `/apps/${appId}/external-auth/tokens/${integrationType}` + const response = await axios.get( + `/apps/${appId}/app-connections/tokens/${integrationType}` ); // @ts-expect-error diff --git a/src/modules/app-connections.types.ts b/src/modules/app-connections.types.ts new file mode 100644 index 0000000..2be2353 --- /dev/null +++ b/src/modules/app-connections.types.ts @@ -0,0 +1,5 @@ +export type AppConnectionIntegrationType = string; + +export type AppConnectionAccessTokenResponse = { + access_token: string; +}; diff --git a/src/modules/external-auth.types.ts b/src/modules/external-auth.types.ts deleted file mode 100644 index 955ce4a..0000000 --- a/src/modules/external-auth.types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type ExternalAuthIntegrationType = string; - -export type ExternalAuthAccessTokenResponse = { - access_token: string; -}; diff --git a/src/modules/types.ts b/src/modules/types.ts index fdd1da0..3cdfe75 100644 --- a/src/modules/types.ts +++ b/src/modules/types.ts @@ -1,3 +1,3 @@ export * from "./app.types.js"; export * from "./agents.types.js"; -export * from "./external-auth.types.js"; \ No newline at end of file +export * from "./app-connections.types.js"; \ No newline at end of file From 5128f0df40e01455a5a5cfb3a681777b8e5ff1a1 Mon Sep 17 00:00:00 2001 From: Roy Miloh Date: Mon, 27 Oct 2025 13:00:42 -0300 Subject: [PATCH 3/4] url --- src/modules/app-connections.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/app-connections.ts b/src/modules/app-connections.ts index a811603..8c4ac33 100644 --- a/src/modules/app-connections.ts +++ b/src/modules/app-connections.ts @@ -27,7 +27,7 @@ export function createAppConnectionsModule(axios: AxiosInstance, appId: string) } const response = await axios.get( - `/apps/${appId}/app-connections/tokens/${integrationType}` + `/apps/${appId}/external-auth/tokens/${integrationType}` ); // @ts-expect-error From 1dcdaa6809a0029d1cc05dd63805948587908931 Mon Sep 17 00:00:00 2001 From: vaksdavid Date: Sun, 9 Nov 2025 16:56:17 +0200 Subject: [PATCH 4/4] change naming from app-connections to connectors --- src/client.ts | 4 ++-- src/modules/app-connections.types.ts | 5 ----- .../{app-connections.ts => connectors.ts} | 19 ++++++++++--------- src/modules/connectors.types.ts | 6 ++++++ src/modules/types.ts | 2 +- 5 files changed, 19 insertions(+), 17 deletions(-) delete mode 100644 src/modules/app-connections.types.ts rename src/modules/{app-connections.ts => connectors.ts} (60%) create mode 100644 src/modules/connectors.types.ts diff --git a/src/client.ts b/src/client.ts index 1444bbe..b3bcc74 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3,7 +3,7 @@ import { createEntitiesModule } from "./modules/entities.js"; import { createIntegrationsModule } from "./modules/integrations.js"; import { createAuthModule } from "./modules/auth.js"; import { createSsoModule } from "./modules/sso.js"; -import { createAppConnectionsModule } from "./modules/app-connections.js"; +import { createConnectorsModule } from "./modules/connectors.js"; import { getAccessToken } from "./utils/auth-utils.js"; import { createFunctionsModule } from "./modules/functions.js"; import { createAgentsModule } from "./modules/agents.js"; @@ -128,7 +128,7 @@ export function createClient(config: { entities: createEntitiesModule(serviceRoleAxiosClient, appId), integrations: createIntegrationsModule(serviceRoleAxiosClient, appId), sso: createSsoModule(serviceRoleAxiosClient, appId, token), - appConnections: createAppConnectionsModule(serviceRoleAxiosClient, appId), + connectors: createConnectorsModule(serviceRoleAxiosClient, appId), functions: createFunctionsModule(serviceRoleFunctionsAxiosClient, appId), agents: createAgentsModule({ axios: serviceRoleAxiosClient, diff --git a/src/modules/app-connections.types.ts b/src/modules/app-connections.types.ts deleted file mode 100644 index 2be2353..0000000 --- a/src/modules/app-connections.types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type AppConnectionIntegrationType = string; - -export type AppConnectionAccessTokenResponse = { - access_token: string; -}; diff --git a/src/modules/app-connections.ts b/src/modules/connectors.ts similarity index 60% rename from src/modules/app-connections.ts rename to src/modules/connectors.ts index 8c4ac33..32b0db1 100644 --- a/src/modules/app-connections.ts +++ b/src/modules/connectors.ts @@ -1,16 +1,16 @@ import { AxiosInstance } from "axios"; import { - AppConnectionIntegrationType, - AppConnectionAccessTokenResponse, -} from "./app-connections.types.js"; + ConnectorIntegrationType, + ConnectorAccessTokenResponse, +} from "./connectors.types.js"; /** - * Creates the App Connections module for the Base44 SDK + * Creates the Connectors module for the Base44 SDK * @param axios - Axios instance (should be service role client) * @param appId - Application ID - * @returns App Connections module + * @returns Connectors module */ -export function createAppConnectionsModule(axios: AxiosInstance, appId: string) { +export function createConnectorsModule(axios: AxiosInstance, appId: string) { return { /** * Retrieve an access token for a given integration type @@ -18,15 +18,15 @@ export function createAppConnectionsModule(axios: AxiosInstance, appId: string) * @returns Access token response */ async getAccessToken( - integrationType: AppConnectionIntegrationType - ): Promise { + integrationType: ConnectorIntegrationType + ): Promise { if (!integrationType || typeof integrationType !== "string") { throw new Error( "Integration type is required and must be a string" ); } - const response = await axios.get( + const response = await axios.get( `/apps/${appId}/external-auth/tokens/${integrationType}` ); @@ -35,3 +35,4 @@ export function createAppConnectionsModule(axios: AxiosInstance, appId: string) }, }; } + diff --git a/src/modules/connectors.types.ts b/src/modules/connectors.types.ts new file mode 100644 index 0000000..c498bb9 --- /dev/null +++ b/src/modules/connectors.types.ts @@ -0,0 +1,6 @@ +export type ConnectorIntegrationType = string; + +export type ConnectorAccessTokenResponse = { + access_token: string; +}; + diff --git a/src/modules/types.ts b/src/modules/types.ts index 3cdfe75..cc37d8e 100644 --- a/src/modules/types.ts +++ b/src/modules/types.ts @@ -1,3 +1,3 @@ export * from "./app.types.js"; export * from "./agents.types.js"; -export * from "./app-connections.types.js"; \ No newline at end of file +export * from "./connectors.types.js"; \ No newline at end of file