diff --git a/connectors/src/connectors/salesforce/lib/permissions.ts b/connectors/src/connectors/salesforce/lib/permissions.ts index 8192bb6fdc7a..f0ad8b839764 100644 --- a/connectors/src/connectors/salesforce/lib/permissions.ts +++ b/connectors/src/connectors/salesforce/lib/permissions.ts @@ -325,3 +325,66 @@ export const getContentNodeParents = ({ ) ); }; + +export const isStandardObjectWhitelisted = (objectName: string) => { + const whitelist = [ + // From https://architect.salesforce.com/diagrams/data-models/sales-cloud/sales-cloud-overview + "Account", + "AccountContactRelation", + "AccountTeamMember", + "Asset", + "Case", + "Campaign", + "CampaignMember", + "Contact", + "Contract", + "ContractContactRole", + "ForecastItem", + "Lead", + "Opportunity", + "OpportunityHistory", + "OpportunityContactRole", + "OpportunityForecast", + "OpportunityLineItem", + "OpportunityTeamMember", + "Order", + "Partner", + "PartnerRole", + "PricebookEntry", + "Product2", + "Quote", + "User", + "Territory", + "AccountTerritory", + // https://architect.salesforce.com/diagrams/data-models/service-cloud/service-cloud-overview + "Account", + "AccountContactRelation", + "Case", + "CaseArticle", + "CaseComment", + "CaseHistory", + "CaseMilestone", + "CaseRelatedIssue", + "CaseSolution", + "CaseTeamMember", + "CaseTeamRole", + "CategoryData", + "CategoryNode", + "Contact", + "ContactRequest", + "ContractLineItem", + "EmailMessage", + "Entitlement", + "EntitlementContact", + "Incident", + "KnowledgeArticle", + "KnowledgeArticleVersion", + "Milestone", + "Problem", + "ServiceContract", + "Solution", + "Swarm", + "SwarmMember", + ]; + return whitelist.includes(objectName); +}; diff --git a/connectors/src/connectors/salesforce/lib/salesforce_api.ts b/connectors/src/connectors/salesforce/lib/salesforce_api.ts index bebe38060596..c976137f5746 100644 --- a/connectors/src/connectors/salesforce/lib/salesforce_api.ts +++ b/connectors/src/connectors/salesforce/lib/salesforce_api.ts @@ -11,6 +11,7 @@ import { isValidSchemaInternalId, } from "@connectors/connectors/salesforce/lib/internal_ids"; import type { SalesforceAPICredentials } from "@connectors/connectors/salesforce/lib/oauth"; +import { isStandardObjectWhitelisted } from "@connectors/connectors/salesforce/lib/permissions"; import type { RemoteDBDatabase, RemoteDBSchema, @@ -128,6 +129,9 @@ export async function fetchTables({ return new Ok( tables.sobjects .filter((obj) => (isCustomSchema ? obj.custom : !obj.custom)) + .filter((obj) => { + return isCustomSchema ? true : isStandardObjectWhitelisted(obj.name); + }) .map((obj) => ({ name: obj.name, database_name: INTERNAL_ID_DATABASE,