diff --git a/src/client.ts b/src/client.ts index 28e8b2d..b3bcc74 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 { createConnectorsModule } from "./modules/connectors.js"; import { getAccessToken } from "./utils/auth-utils.js"; import { createFunctionsModule } from "./modules/functions.js"; import { createAgentsModule } from "./modules/agents.js"; @@ -127,6 +128,7 @@ export function createClient(config: { entities: createEntitiesModule(serviceRoleAxiosClient, appId), integrations: createIntegrationsModule(serviceRoleAxiosClient, appId), sso: createSsoModule(serviceRoleAxiosClient, appId, token), + connectors: createConnectorsModule(serviceRoleAxiosClient, appId), functions: createFunctionsModule(serviceRoleFunctionsAxiosClient, appId), agents: createAgentsModule({ axios: serviceRoleAxiosClient, diff --git a/src/modules/connectors.ts b/src/modules/connectors.ts new file mode 100644 index 0000000..32b0db1 --- /dev/null +++ b/src/modules/connectors.ts @@ -0,0 +1,38 @@ +import { AxiosInstance } from "axios"; +import { + ConnectorIntegrationType, + ConnectorAccessTokenResponse, +} from "./connectors.types.js"; + +/** + * Creates the Connectors module for the Base44 SDK + * @param axios - Axios instance (should be service role client) + * @param appId - Application ID + * @returns Connectors module + */ +export function createConnectorsModule(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: ConnectorIntegrationType + ): 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/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 8f24e94..cc37d8e 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 "./connectors.types.js"; \ No newline at end of file