From 8b4c9aa3f53a7b3709dbcfacc99294df6bde2021 Mon Sep 17 00:00:00 2001 From: waleed Date: Thu, 18 Dec 2025 12:56:44 -0800 Subject: [PATCH 1/2] improvement(helm): added SSO and cloud storage variables to helm charts --- helm/sim/examples/values-aws.yaml | 13 ++++++++++-- helm/sim/examples/values-azure.yaml | 15 ++++++++++++- helm/sim/values.yaml | 33 +++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/helm/sim/examples/values-aws.yaml b/helm/sim/examples/values-aws.yaml index 8fb7e167ab..a36f6b1b86 100644 --- a/helm/sim/examples/values-aws.yaml +++ b/helm/sim/examples/values-aws.yaml @@ -44,9 +44,18 @@ app: NODE_ENV: "production" NEXT_TELEMETRY_DISABLED: "1" - - # AWS-specific environment variables + + # AWS S3 Cloud Storage Configuration (RECOMMENDED for production) + # Create S3 buckets in your AWS account and configure IAM permissions AWS_REGION: "us-west-2" + AWS_ACCESS_KEY_ID: "" # AWS access key (or use IRSA for EKS) + AWS_SECRET_ACCESS_KEY: "" # AWS secret key (or use IRSA for EKS) + S3_BUCKET_NAME: "workspace-files" # Workspace files + S3_KB_BUCKET_NAME: "knowledge-base" # Knowledge base documents + S3_EXECUTION_FILES_BUCKET_NAME: "execution-files" # Workflow execution outputs + S3_CHAT_BUCKET_NAME: "chat-files" # Deployed chat assets + S3_COPILOT_BUCKET_NAME: "copilot-files" # Copilot attachments + S3_PROFILE_PICTURES_BUCKET_NAME: "profile-pictures" # User avatars # Realtime service realtime: diff --git a/helm/sim/examples/values-azure.yaml b/helm/sim/examples/values-azure.yaml index 1ae5a468b1..238b3e958d 100644 --- a/helm/sim/examples/values-azure.yaml +++ b/helm/sim/examples/values-azure.yaml @@ -42,10 +42,23 @@ app: # Optional: API Key Encryption (RECOMMENDED for production) # Generate 64-character hex string using: openssl rand -hex 32 API_ENCRYPTION_KEY: "your-64-char-hex-api-encryption-key-here" # Optional but recommended - + NODE_ENV: "production" NEXT_TELEMETRY_DISABLED: "1" + # Azure Blob Storage Configuration (RECOMMENDED for production) + # Create a storage account and containers in your Azure subscription + AZURE_ACCOUNT_NAME: "simstudiostorageacct" # Azure storage account name + AZURE_ACCOUNT_KEY: "" # Storage account access key + # Or use connection string instead of account name/key: + # AZURE_CONNECTION_STRING: "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net" + AZURE_STORAGE_CONTAINER_NAME: "workspace-files" # Workspace files container + AZURE_STORAGE_KB_CONTAINER_NAME: "knowledge-base" # Knowledge base documents container + AZURE_STORAGE_EXECUTION_FILES_CONTAINER_NAME: "execution-files" # Workflow execution outputs + AZURE_STORAGE_CHAT_CONTAINER_NAME: "chat-files" # Deployed chat assets container + AZURE_STORAGE_COPILOT_CONTAINER_NAME: "copilot-files" # Copilot attachments container + AZURE_STORAGE_PROFILE_PICTURES_CONTAINER_NAME: "profile-pictures" # User avatars container + # Realtime service realtime: enabled: true diff --git a/helm/sim/values.yaml b/helm/sim/values.yaml index d588d06b76..d1c1b71381 100644 --- a/helm/sim/values.yaml +++ b/helm/sim/values.yaml @@ -116,8 +116,37 @@ app: # Access Control (leave empty if not restricting login) ALLOWED_LOGIN_EMAILS: "" # Comma-separated list of allowed email addresses for login ALLOWED_LOGIN_DOMAINS: "" # Comma-separated list of allowed email domains for login - - + + # SSO Configuration (Enterprise Single Sign-On) + # Set to "true" AFTER running the SSO registration script + SSO_ENABLED: "" # Enable SSO authentication ("true" to enable) + NEXT_PUBLIC_SSO_ENABLED: "" # Show SSO login button in UI ("true" to enable) + + # AWS S3 Cloud Storage Configuration (optional - for file storage) + # If configured, files will be stored in S3 instead of local storage + AWS_REGION: "" # AWS region (e.g., "us-east-1") + AWS_ACCESS_KEY_ID: "" # AWS access key ID + AWS_SECRET_ACCESS_KEY: "" # AWS secret access key + S3_BUCKET_NAME: "" # S3 bucket for workspace files + S3_KB_BUCKET_NAME: "" # S3 bucket for knowledge base files + S3_EXECUTION_FILES_BUCKET_NAME: "" # S3 bucket for workflow execution files + S3_CHAT_BUCKET_NAME: "" # S3 bucket for deployed chat files + S3_COPILOT_BUCKET_NAME: "" # S3 bucket for copilot files + S3_PROFILE_PICTURES_BUCKET_NAME: "" # S3 bucket for user profile pictures + + # Azure Blob Storage Configuration (optional - for file storage) + # If configured, files will be stored in Azure Blob instead of local storage + # Note: Azure Blob takes precedence over S3 if both are configured + AZURE_ACCOUNT_NAME: "" # Azure storage account name + AZURE_ACCOUNT_KEY: "" # Azure storage account key + AZURE_CONNECTION_STRING: "" # Azure connection string (alternative to account name/key) + AZURE_STORAGE_CONTAINER_NAME: "" # Azure container for workspace files + AZURE_STORAGE_KB_CONTAINER_NAME: "" # Azure container for knowledge base files + AZURE_STORAGE_EXECUTION_FILES_CONTAINER_NAME: "" # Azure container for workflow execution files + AZURE_STORAGE_CHAT_CONTAINER_NAME: "" # Azure container for deployed chat files + AZURE_STORAGE_COPILOT_CONTAINER_NAME: "" # Azure container for copilot files + AZURE_STORAGE_PROFILE_PICTURES_CONTAINER_NAME: "" # Azure container for user profile pictures + # Service configuration service: type: ClusterIP From bd07f756eb20f473379c62b060f25fa5b1692a84 Mon Sep 17 00:00:00 2001 From: waleed Date: Thu, 18 Dec 2025 13:09:57 -0800 Subject: [PATCH 2/2] consolidated sf types --- apps/sim/tools/salesforce/create_account.ts | 37 +- apps/sim/tools/salesforce/create_case.ts | 31 +- apps/sim/tools/salesforce/create_contact.ts | 35 +- apps/sim/tools/salesforce/create_lead.ts | 33 +- .../tools/salesforce/create_opportunity.ts | 31 +- apps/sim/tools/salesforce/create_task.ts | 31 +- apps/sim/tools/salesforce/delete_account.ts | 24 +- apps/sim/tools/salesforce/delete_case.ts | 24 +- apps/sim/tools/salesforce/delete_contact.ts | 22 +- apps/sim/tools/salesforce/delete_lead.ts | 24 +- .../tools/salesforce/delete_opportunity.ts | 24 +- apps/sim/tools/salesforce/delete_task.ts | 24 +- apps/sim/tools/salesforce/describe_object.ts | 35 +- apps/sim/tools/salesforce/get_accounts.ts | 2 +- apps/sim/tools/salesforce/get_cases.ts | 32 +- apps/sim/tools/salesforce/get_contacts.ts | 36 +- apps/sim/tools/salesforce/get_dashboard.ts | 29 +- apps/sim/tools/salesforce/get_leads.ts | 33 +- .../sim/tools/salesforce/get_opportunities.ts | 35 +- apps/sim/tools/salesforce/get_report.ts | 25 +- apps/sim/tools/salesforce/get_tasks.ts | 32 +- apps/sim/tools/salesforce/list_dashboards.ts | 25 +- apps/sim/tools/salesforce/list_objects.ts | 26 +- .../sim/tools/salesforce/list_report_types.ts | 24 +- apps/sim/tools/salesforce/list_reports.ts | 26 +- apps/sim/tools/salesforce/query.ts | 27 +- apps/sim/tools/salesforce/query_more.ts | 29 +- .../sim/tools/salesforce/refresh_dashboard.ts | 29 +- apps/sim/tools/salesforce/run_report.ts | 35 +- apps/sim/tools/salesforce/types.ts | 566 ++++++++++++++++-- apps/sim/tools/salesforce/update_account.ts | 37 +- apps/sim/tools/salesforce/update_case.ts | 28 +- apps/sim/tools/salesforce/update_contact.ts | 35 +- apps/sim/tools/salesforce/update_lead.ts | 33 +- .../tools/salesforce/update_opportunity.ts | 31 +- apps/sim/tools/salesforce/update_task.ts | 29 +- 36 files changed, 671 insertions(+), 908 deletions(-) diff --git a/apps/sim/tools/salesforce/create_account.ts b/apps/sim/tools/salesforce/create_account.ts index 05f2d906d3..74bae8440b 100644 --- a/apps/sim/tools/salesforce/create_account.ts +++ b/apps/sim/tools/salesforce/create_account.ts @@ -1,40 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceCreateAccountParams, + SalesforceCreateAccountResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceCreateAccount') -export interface SalesforceCreateAccountParams { - accessToken: string - idToken?: string - instanceUrl?: string - name: string - type?: string - industry?: string - phone?: string - website?: string - billingStreet?: string - billingCity?: string - billingState?: string - billingPostalCode?: string - billingCountry?: string - description?: string - annualRevenue?: string - numberOfEmployees?: string -} - -export interface SalesforceCreateAccountResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { - operation: 'create_account' - } - } -} - export const salesforceCreateAccountTool: ToolConfig< SalesforceCreateAccountParams, SalesforceCreateAccountResponse diff --git a/apps/sim/tools/salesforce/create_case.ts b/apps/sim/tools/salesforce/create_case.ts index 251ba91c23..09214ac2e4 100644 --- a/apps/sim/tools/salesforce/create_case.ts +++ b/apps/sim/tools/salesforce/create_case.ts @@ -1,30 +1,9 @@ +import type { + SalesforceCreateCaseParams, + SalesforceCreateCaseResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceCreateCaseParams { - accessToken: string - idToken?: string - instanceUrl?: string - subject: string - status?: string - priority?: string - origin?: string - contactId?: string - accountId?: string - description?: string -} - -export interface SalesforceCreateCaseResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { - operation: 'create_case' - } - } -} export const salesforceCreateCaseTool: ToolConfig< SalesforceCreateCaseParams, diff --git a/apps/sim/tools/salesforce/create_contact.ts b/apps/sim/tools/salesforce/create_contact.ts index 72a62d9292..d8ee11c04c 100644 --- a/apps/sim/tools/salesforce/create_contact.ts +++ b/apps/sim/tools/salesforce/create_contact.ts @@ -1,38 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceCreateContactParams, + SalesforceCreateContactResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceContacts') -export interface SalesforceCreateContactParams { - accessToken: string - idToken?: string - instanceUrl?: string - lastName: string - firstName?: string - email?: string - phone?: string - accountId?: string - title?: string - department?: string - mailingStreet?: string - mailingCity?: string - mailingState?: string - mailingPostalCode?: string - mailingCountry?: string - description?: string -} - -export interface SalesforceCreateContactResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { operation: 'create_contact' } - } -} - export const salesforceCreateContactTool: ToolConfig< SalesforceCreateContactParams, SalesforceCreateContactResponse diff --git a/apps/sim/tools/salesforce/create_lead.ts b/apps/sim/tools/salesforce/create_lead.ts index 1ffd1b5a43..93d92f0c2c 100644 --- a/apps/sim/tools/salesforce/create_lead.ts +++ b/apps/sim/tools/salesforce/create_lead.ts @@ -1,32 +1,9 @@ +import type { + SalesforceCreateLeadParams, + SalesforceCreateLeadResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceCreateLeadParams { - accessToken: string - idToken?: string - instanceUrl?: string - lastName: string - company: string - firstName?: string - email?: string - phone?: string - status?: string - leadSource?: string - title?: string - description?: string -} - -export interface SalesforceCreateLeadResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { - operation: 'create_lead' - } - } -} export const salesforceCreateLeadTool: ToolConfig< SalesforceCreateLeadParams, diff --git a/apps/sim/tools/salesforce/create_opportunity.ts b/apps/sim/tools/salesforce/create_opportunity.ts index aebc55c7f8..eba10e3b6a 100644 --- a/apps/sim/tools/salesforce/create_opportunity.ts +++ b/apps/sim/tools/salesforce/create_opportunity.ts @@ -1,30 +1,9 @@ +import type { + SalesforceCreateOpportunityParams, + SalesforceCreateOpportunityResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceCreateOpportunityParams { - accessToken: string - idToken?: string - instanceUrl?: string - name: string - stageName: string - closeDate: string - accountId?: string - amount?: string - probability?: string - description?: string -} - -export interface SalesforceCreateOpportunityResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { - operation: 'create_opportunity' - } - } -} export const salesforceCreateOpportunityTool: ToolConfig< SalesforceCreateOpportunityParams, diff --git a/apps/sim/tools/salesforce/create_task.ts b/apps/sim/tools/salesforce/create_task.ts index b00ff719f3..c815185d75 100644 --- a/apps/sim/tools/salesforce/create_task.ts +++ b/apps/sim/tools/salesforce/create_task.ts @@ -1,30 +1,9 @@ +import type { + SalesforceCreateTaskParams, + SalesforceCreateTaskResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceCreateTaskParams { - accessToken: string - idToken?: string - instanceUrl?: string - subject: string - status?: string - priority?: string - activityDate?: string - whoId?: string - whatId?: string - description?: string -} - -export interface SalesforceCreateTaskResponse { - success: boolean - output: { - id: string - success: boolean - created: boolean - metadata: { - operation: 'create_task' - } - } -} export const salesforceCreateTaskTool: ToolConfig< SalesforceCreateTaskParams, diff --git a/apps/sim/tools/salesforce/delete_account.ts b/apps/sim/tools/salesforce/delete_account.ts index cbf635e6fd..6753dbe301 100644 --- a/apps/sim/tools/salesforce/delete_account.ts +++ b/apps/sim/tools/salesforce/delete_account.ts @@ -1,27 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceDeleteAccountParams, + SalesforceDeleteAccountResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceDeleteAccount') -export interface SalesforceDeleteAccountParams { - accessToken: string - idToken?: string - instanceUrl?: string - accountId: string -} - -export interface SalesforceDeleteAccountResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { - operation: 'delete_account' - } - } -} - export const salesforceDeleteAccountTool: ToolConfig< SalesforceDeleteAccountParams, SalesforceDeleteAccountResponse diff --git a/apps/sim/tools/salesforce/delete_case.ts b/apps/sim/tools/salesforce/delete_case.ts index cefb38ed01..d2fbbb31ea 100644 --- a/apps/sim/tools/salesforce/delete_case.ts +++ b/apps/sim/tools/salesforce/delete_case.ts @@ -1,23 +1,9 @@ +import type { + SalesforceDeleteCaseParams, + SalesforceDeleteCaseResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceDeleteCaseParams { - accessToken: string - idToken?: string - instanceUrl?: string - caseId: string -} - -export interface SalesforceDeleteCaseResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { - operation: 'delete_case' - } - } -} export const salesforceDeleteCaseTool: ToolConfig< SalesforceDeleteCaseParams, diff --git a/apps/sim/tools/salesforce/delete_contact.ts b/apps/sim/tools/salesforce/delete_contact.ts index a15c3a7dbb..28ae47c6a5 100644 --- a/apps/sim/tools/salesforce/delete_contact.ts +++ b/apps/sim/tools/salesforce/delete_contact.ts @@ -1,25 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceDeleteContactParams, + SalesforceDeleteContactResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceContacts') -export interface SalesforceDeleteContactParams { - accessToken: string - idToken?: string - instanceUrl?: string - contactId: string -} - -export interface SalesforceDeleteContactResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { operation: 'delete_contact' } - } -} - export const salesforceDeleteContactTool: ToolConfig< SalesforceDeleteContactParams, SalesforceDeleteContactResponse diff --git a/apps/sim/tools/salesforce/delete_lead.ts b/apps/sim/tools/salesforce/delete_lead.ts index 9f79b33940..aa8dc2f2bc 100644 --- a/apps/sim/tools/salesforce/delete_lead.ts +++ b/apps/sim/tools/salesforce/delete_lead.ts @@ -1,23 +1,9 @@ +import type { + SalesforceDeleteLeadParams, + SalesforceDeleteLeadResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceDeleteLeadParams { - accessToken: string - idToken?: string - instanceUrl?: string - leadId: string -} - -export interface SalesforceDeleteLeadResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { - operation: 'delete_lead' - } - } -} export const salesforceDeleteLeadTool: ToolConfig< SalesforceDeleteLeadParams, diff --git a/apps/sim/tools/salesforce/delete_opportunity.ts b/apps/sim/tools/salesforce/delete_opportunity.ts index 31258d8677..826c2a9639 100644 --- a/apps/sim/tools/salesforce/delete_opportunity.ts +++ b/apps/sim/tools/salesforce/delete_opportunity.ts @@ -1,23 +1,9 @@ +import type { + SalesforceDeleteOpportunityParams, + SalesforceDeleteOpportunityResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceDeleteOpportunityParams { - accessToken: string - idToken?: string - instanceUrl?: string - opportunityId: string -} - -export interface SalesforceDeleteOpportunityResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { - operation: 'delete_opportunity' - } - } -} export const salesforceDeleteOpportunityTool: ToolConfig< SalesforceDeleteOpportunityParams, diff --git a/apps/sim/tools/salesforce/delete_task.ts b/apps/sim/tools/salesforce/delete_task.ts index 6f6cc405b0..ec606fbefc 100644 --- a/apps/sim/tools/salesforce/delete_task.ts +++ b/apps/sim/tools/salesforce/delete_task.ts @@ -1,23 +1,9 @@ +import type { + SalesforceDeleteTaskParams, + SalesforceDeleteTaskResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceDeleteTaskParams { - accessToken: string - idToken?: string - instanceUrl?: string - taskId: string -} - -export interface SalesforceDeleteTaskResponse { - success: boolean - output: { - id: string - deleted: boolean - metadata: { - operation: 'delete_task' - } - } -} export const salesforceDeleteTaskTool: ToolConfig< SalesforceDeleteTaskParams, diff --git a/apps/sim/tools/salesforce/describe_object.ts b/apps/sim/tools/salesforce/describe_object.ts index a9087e0ee8..70b5f12348 100644 --- a/apps/sim/tools/salesforce/describe_object.ts +++ b/apps/sim/tools/salesforce/describe_object.ts @@ -1,38 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceDescribeObjectParams, + SalesforceDescribeObjectResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceQuery') -export interface SalesforceDescribeObjectParams { - accessToken: string - idToken?: string - instanceUrl?: string - objectName: string -} - -export interface SalesforceDescribeObjectResponse { - success: boolean - output: { - objectName: string - label?: string - labelPlural?: string - fields?: any[] - keyPrefix?: string - queryable?: boolean - createable?: boolean - updateable?: boolean - deletable?: boolean - childRelationships?: any[] - recordTypeInfos?: any[] - metadata: { - operation: 'describe_object' - fieldCount: number - } - success: boolean - } -} - /** * Describe a Salesforce object to get its metadata/fields * Useful for discovering available fields for queries diff --git a/apps/sim/tools/salesforce/get_accounts.ts b/apps/sim/tools/salesforce/get_accounts.ts index 1286b68f36..137f4ec6e4 100644 --- a/apps/sim/tools/salesforce/get_accounts.ts +++ b/apps/sim/tools/salesforce/get_accounts.ts @@ -3,8 +3,8 @@ import type { SalesforceGetAccountsParams, SalesforceGetAccountsResponse, } from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceGetAccounts') diff --git a/apps/sim/tools/salesforce/get_cases.ts b/apps/sim/tools/salesforce/get_cases.ts index cd65f84790..469bc4e4f8 100644 --- a/apps/sim/tools/salesforce/get_cases.ts +++ b/apps/sim/tools/salesforce/get_cases.ts @@ -1,34 +1,6 @@ +import type { SalesforceGetCasesParams, SalesforceGetCasesResponse } from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceGetCasesParams { - accessToken: string - idToken?: string - instanceUrl?: string - caseId?: string - limit?: string - fields?: string - orderBy?: string -} - -export interface SalesforceGetCasesResponse { - success: boolean - output: { - case?: any - cases?: any[] - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } - metadata: { - operation: 'get_cases' - totalReturned?: number - hasMore?: boolean - } - success: boolean - } -} export const salesforceGetCasesTool: ToolConfig< SalesforceGetCasesParams, diff --git a/apps/sim/tools/salesforce/get_contacts.ts b/apps/sim/tools/salesforce/get_contacts.ts index 679d3a32d6..3ab35e0a19 100644 --- a/apps/sim/tools/salesforce/get_contacts.ts +++ b/apps/sim/tools/salesforce/get_contacts.ts @@ -1,39 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceGetContactsParams, + SalesforceGetContactsResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceContacts') -export interface SalesforceGetContactsParams { - accessToken: string - idToken?: string - instanceUrl?: string - contactId?: string - limit?: string - fields?: string - orderBy?: string -} - -export interface SalesforceGetContactsResponse { - success: boolean - output: { - contacts?: any[] - contact?: any - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } - metadata: { - operation: 'get_contacts' - totalReturned?: number - hasMore?: boolean - singleContact?: boolean - } - success: boolean - } -} - export const salesforceGetContactsTool: ToolConfig< SalesforceGetContactsParams, SalesforceGetContactsResponse diff --git a/apps/sim/tools/salesforce/get_dashboard.ts b/apps/sim/tools/salesforce/get_dashboard.ts index b5824f26e0..a9bf3a769e 100644 --- a/apps/sim/tools/salesforce/get_dashboard.ts +++ b/apps/sim/tools/salesforce/get_dashboard.ts @@ -1,32 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceGetDashboardParams, + SalesforceGetDashboardResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceDashboards') -export interface SalesforceGetDashboardParams { - accessToken: string - idToken?: string - instanceUrl?: string - dashboardId: string -} - -export interface SalesforceGetDashboardResponse { - success: boolean - output: { - dashboard: any - dashboardId: string - components: any[] - metadata: { - operation: 'get_dashboard' - dashboardName?: string - folderId?: string - runningUser?: any - } - success: boolean - } -} - /** * Get details for a specific dashboard * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_dashboard_results.htm diff --git a/apps/sim/tools/salesforce/get_leads.ts b/apps/sim/tools/salesforce/get_leads.ts index 93bda3453b..de6834abce 100644 --- a/apps/sim/tools/salesforce/get_leads.ts +++ b/apps/sim/tools/salesforce/get_leads.ts @@ -1,35 +1,6 @@ +import type { SalesforceGetLeadsParams, SalesforceGetLeadsResponse } from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceGetLeadsParams { - accessToken: string - idToken?: string - instanceUrl?: string - leadId?: string - limit?: string - fields?: string - orderBy?: string -} - -export interface SalesforceGetLeadsResponse { - success: boolean - output: { - lead?: any - leads?: any[] - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } - metadata: { - operation: 'get_leads' - totalReturned?: number - hasMore?: boolean - singleLead?: boolean - } - success: boolean - } -} export const salesforceGetLeadsTool: ToolConfig< SalesforceGetLeadsParams, diff --git a/apps/sim/tools/salesforce/get_opportunities.ts b/apps/sim/tools/salesforce/get_opportunities.ts index 0330abdd45..084459b21c 100644 --- a/apps/sim/tools/salesforce/get_opportunities.ts +++ b/apps/sim/tools/salesforce/get_opportunities.ts @@ -1,34 +1,9 @@ +import type { + SalesforceGetOpportunitiesParams, + SalesforceGetOpportunitiesResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceGetOpportunitiesParams { - accessToken: string - idToken?: string - instanceUrl?: string - opportunityId?: string - limit?: string - fields?: string - orderBy?: string -} - -export interface SalesforceGetOpportunitiesResponse { - success: boolean - output: { - opportunity?: any - opportunities?: any[] - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } - metadata: { - operation: 'get_opportunities' - totalReturned?: number - hasMore?: boolean - } - success: boolean - } -} export const salesforceGetOpportunitiesTool: ToolConfig< SalesforceGetOpportunitiesParams, diff --git a/apps/sim/tools/salesforce/get_report.ts b/apps/sim/tools/salesforce/get_report.ts index e1f0c08dfd..12da61bbf5 100644 --- a/apps/sim/tools/salesforce/get_report.ts +++ b/apps/sim/tools/salesforce/get_report.ts @@ -1,28 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceGetReportParams, + SalesforceGetReportResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceReports') -export interface SalesforceGetReportParams { - accessToken: string - idToken?: string - instanceUrl?: string - reportId: string -} - -export interface SalesforceGetReportResponse { - success: boolean - output: { - report: any - reportId: string - metadata: { - operation: 'get_report' - } - success: boolean - } -} - /** * Get metadata for a specific report * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_get_reportmetadata.htm diff --git a/apps/sim/tools/salesforce/get_tasks.ts b/apps/sim/tools/salesforce/get_tasks.ts index 791a5ab211..358dfa29ac 100644 --- a/apps/sim/tools/salesforce/get_tasks.ts +++ b/apps/sim/tools/salesforce/get_tasks.ts @@ -1,34 +1,6 @@ +import type { SalesforceGetTasksParams, SalesforceGetTasksResponse } from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceGetTasksParams { - accessToken: string - idToken?: string - instanceUrl?: string - taskId?: string - limit?: string - fields?: string - orderBy?: string -} - -export interface SalesforceGetTasksResponse { - success: boolean - output: { - task?: any - tasks?: any[] - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } - metadata: { - operation: 'get_tasks' - totalReturned?: number - hasMore?: boolean - } - success: boolean - } -} export const salesforceGetTasksTool: ToolConfig< SalesforceGetTasksParams, diff --git a/apps/sim/tools/salesforce/list_dashboards.ts b/apps/sim/tools/salesforce/list_dashboards.ts index 62a5fc42a1..a2122aed20 100644 --- a/apps/sim/tools/salesforce/list_dashboards.ts +++ b/apps/sim/tools/salesforce/list_dashboards.ts @@ -1,28 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceListDashboardsParams, + SalesforceListDashboardsResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceDashboards') -export interface SalesforceListDashboardsParams { - accessToken: string - idToken?: string - instanceUrl?: string - folderName?: string -} - -export interface SalesforceListDashboardsResponse { - success: boolean - output: { - dashboards: any[] - metadata: { - operation: 'list_dashboards' - totalReturned: number - } - success: boolean - } -} - /** * List all dashboards accessible by the current user * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_getbasic_dashboardlist.htm diff --git a/apps/sim/tools/salesforce/list_objects.ts b/apps/sim/tools/salesforce/list_objects.ts index 4efedefa6e..20406bf66b 100644 --- a/apps/sim/tools/salesforce/list_objects.ts +++ b/apps/sim/tools/salesforce/list_objects.ts @@ -1,29 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceListObjectsParams, + SalesforceListObjectsResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceQuery') -export interface SalesforceListObjectsParams { - accessToken: string - idToken?: string - instanceUrl?: string -} - -export interface SalesforceListObjectsResponse { - success: boolean - output: { - objects: any[] - encoding?: string - maxBatchSize?: number - metadata: { - operation: 'list_objects' - totalReturned: number - } - success: boolean - } -} - /** * List all available Salesforce objects * Useful for discovering what objects are available diff --git a/apps/sim/tools/salesforce/list_report_types.ts b/apps/sim/tools/salesforce/list_report_types.ts index 70f3c09167..9a1988e130 100644 --- a/apps/sim/tools/salesforce/list_report_types.ts +++ b/apps/sim/tools/salesforce/list_report_types.ts @@ -1,27 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceListReportTypesParams, + SalesforceListReportTypesResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceReports') -export interface SalesforceListReportTypesParams { - accessToken: string - idToken?: string - instanceUrl?: string -} - -export interface SalesforceListReportTypesResponse { - success: boolean - output: { - reportTypes: any[] - metadata: { - operation: 'list_report_types' - totalReturned: number - } - success: boolean - } -} - /** * Get list of available report types * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_list_reporttypes.htm diff --git a/apps/sim/tools/salesforce/list_reports.ts b/apps/sim/tools/salesforce/list_reports.ts index 09550383aa..fe85a65f77 100644 --- a/apps/sim/tools/salesforce/list_reports.ts +++ b/apps/sim/tools/salesforce/list_reports.ts @@ -1,29 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceListReportsParams, + SalesforceListReportsResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceReports') -export interface SalesforceListReportsParams { - accessToken: string - idToken?: string - instanceUrl?: string - folderName?: string - searchTerm?: string -} - -export interface SalesforceListReportsResponse { - success: boolean - output: { - reports: any[] - metadata: { - operation: 'list_reports' - totalReturned: number - } - success: boolean - } -} - /** * List all reports accessible by the current user * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_get_reportlist.htm diff --git a/apps/sim/tools/salesforce/query.ts b/apps/sim/tools/salesforce/query.ts index 29c5a9032b..4c138ed0f0 100644 --- a/apps/sim/tools/salesforce/query.ts +++ b/apps/sim/tools/salesforce/query.ts @@ -1,33 +1,10 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { SalesforceQueryParams, SalesforceQueryResponse } from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceQuery') -export interface SalesforceQueryParams { - accessToken: string - idToken?: string - instanceUrl?: string - query: string -} - -export interface SalesforceQueryResponse { - success: boolean - output: { - records: any[] - totalSize: number - done: boolean - nextRecordsUrl?: string - query: string - metadata: { - operation: 'query' - totalReturned: number - hasMore: boolean - } - success: boolean - } -} - /** * Execute a custom SOQL query * @see https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm diff --git a/apps/sim/tools/salesforce/query_more.ts b/apps/sim/tools/salesforce/query_more.ts index bae4b01474..77b3bd3eb3 100644 --- a/apps/sim/tools/salesforce/query_more.ts +++ b/apps/sim/tools/salesforce/query_more.ts @@ -1,32 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceQueryMoreParams, + SalesforceQueryMoreResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceQuery') -export interface SalesforceQueryMoreParams { - accessToken: string - idToken?: string - instanceUrl?: string - nextRecordsUrl: string -} - -export interface SalesforceQueryMoreResponse { - success: boolean - output: { - records: any[] - totalSize: number - done: boolean - nextRecordsUrl?: string - metadata: { - operation: 'query_more' - totalReturned: number - hasMore: boolean - } - success: boolean - } -} - /** * Retrieve additional query results using the nextRecordsUrl * @see https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm diff --git a/apps/sim/tools/salesforce/refresh_dashboard.ts b/apps/sim/tools/salesforce/refresh_dashboard.ts index 6fb355cafd..8a0f965bf5 100644 --- a/apps/sim/tools/salesforce/refresh_dashboard.ts +++ b/apps/sim/tools/salesforce/refresh_dashboard.ts @@ -1,32 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceRefreshDashboardParams, + SalesforceRefreshDashboardResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceDashboards') -export interface SalesforceRefreshDashboardParams { - accessToken: string - idToken?: string - instanceUrl?: string - dashboardId: string -} - -export interface SalesforceRefreshDashboardResponse { - success: boolean - output: { - dashboard: any - dashboardId: string - components: any[] - status?: any - metadata: { - operation: 'refresh_dashboard' - dashboardName?: string - refreshDate?: string - } - success: boolean - } -} - /** * Refresh a dashboard to get latest data * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_refresh_dashboard.htm diff --git a/apps/sim/tools/salesforce/run_report.ts b/apps/sim/tools/salesforce/run_report.ts index cca98d1ed3..25eddd35ae 100644 --- a/apps/sim/tools/salesforce/run_report.ts +++ b/apps/sim/tools/salesforce/run_report.ts @@ -1,38 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceRunReportParams, + SalesforceRunReportResponse, +} from '@/tools/salesforce/types' +import { extractErrorMessage, getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { extractErrorMessage, getInstanceUrl } from './utils' const logger = createLogger('SalesforceReports') -export interface SalesforceRunReportParams { - accessToken: string - idToken?: string - instanceUrl?: string - reportId: string - includeDetails?: string - filters?: string -} - -export interface SalesforceRunReportResponse { - success: boolean - output: { - reportId: string - reportMetadata?: any - reportExtendedMetadata?: any - factMap?: any - groupingsDown?: any - groupingsAcross?: any - hasDetailRows?: boolean - allData?: boolean - metadata: { - operation: 'run_report' - reportName?: string - reportFormat?: string - } - success: boolean - } -} - /** * Run a report and return the results * @see https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_get_reportdata.htm diff --git a/apps/sim/tools/salesforce/types.ts b/apps/sim/tools/salesforce/types.ts index 17cb41c04c..21769103e0 100644 --- a/apps/sim/tools/salesforce/types.ts +++ b/apps/sim/tools/salesforce/types.ts @@ -1,6 +1,23 @@ import type { ToolResponse } from '@/tools/types' -// Common Salesforce types +/** + * Base parameters shared by all Salesforce operations + */ +export interface BaseSalesforceParams { + accessToken: string + idToken?: string + instanceUrl?: string +} + +/** + * Common paging structure for list operations + */ +export interface SalesforcePaging { + nextRecordsUrl?: string + totalSize: number + done: boolean +} + export interface SalesforceAccount { Id: string Name: string @@ -22,13 +39,12 @@ export interface SalesforceAccount { [key: string]: any } -export interface SalesforcePaging { - nextRecordsUrl?: string - totalSize: number - done: boolean +export interface SalesforceGetAccountsParams extends BaseSalesforceParams { + limit?: string + fields?: string + orderBy?: string } -// Get Accounts export interface SalesforceGetAccountsResponse extends ToolResponse { output: { accounts: SalesforceAccount[] @@ -42,16 +58,22 @@ export interface SalesforceGetAccountsResponse extends ToolResponse { } } -export interface SalesforceGetAccountsParams { - accessToken: string - idToken?: string - instanceUrl?: string - limit?: string - fields?: string - orderBy?: string +export interface SalesforceCreateAccountParams extends BaseSalesforceParams { + name: string + type?: string + industry?: string + phone?: string + website?: string + billingStreet?: string + billingCity?: string + billingState?: string + billingPostalCode?: string + billingCountry?: string + description?: string + annualRevenue?: string + numberOfEmployees?: string } -// Create Account export interface SalesforceCreateAccountResponse { success: boolean output: { @@ -64,7 +86,23 @@ export interface SalesforceCreateAccountResponse { } } -// Update Account +export interface SalesforceUpdateAccountParams extends BaseSalesforceParams { + accountId: string + name?: string + type?: string + industry?: string + phone?: string + website?: string + billingStreet?: string + billingCity?: string + billingState?: string + billingPostalCode?: string + billingCountry?: string + description?: string + annualRevenue?: string + numberOfEmployees?: string +} + export interface SalesforceUpdateAccountResponse { success: boolean output: { @@ -76,7 +114,10 @@ export interface SalesforceUpdateAccountResponse { } } -// Delete Account +export interface SalesforceDeleteAccountParams extends BaseSalesforceParams { + accountId: string +} + export interface SalesforceDeleteAccountResponse { success: boolean output: { @@ -88,17 +129,19 @@ export interface SalesforceDeleteAccountResponse { } } -// Contact types +export interface SalesforceGetContactsParams extends BaseSalesforceParams { + contactId?: string + limit?: string + fields?: string + orderBy?: string +} + export interface SalesforceGetContactsResponse { success: boolean output: { contacts?: any[] contact?: any - paging?: { - nextRecordsUrl?: string - totalSize: number - done: boolean - } + paging?: SalesforcePaging metadata: { operation: 'get_contacts' totalReturned?: number @@ -109,6 +152,22 @@ export interface SalesforceGetContactsResponse { } } +export interface SalesforceCreateContactParams extends BaseSalesforceParams { + lastName: string + firstName?: string + email?: string + phone?: string + accountId?: string + title?: string + department?: string + mailingStreet?: string + mailingCity?: string + mailingState?: string + mailingPostalCode?: string + mailingCountry?: string + description?: string +} + export interface SalesforceCreateContactResponse { success: boolean output: { @@ -119,6 +178,23 @@ export interface SalesforceCreateContactResponse { } } +export interface SalesforceUpdateContactParams extends BaseSalesforceParams { + contactId: string + lastName?: string + firstName?: string + email?: string + phone?: string + accountId?: string + title?: string + department?: string + mailingStreet?: string + mailingCity?: string + mailingState?: string + mailingPostalCode?: string + mailingCountry?: string + description?: string +} + export interface SalesforceUpdateContactResponse { success: boolean output: { @@ -128,6 +204,10 @@ export interface SalesforceUpdateContactResponse { } } +export interface SalesforceDeleteContactParams extends BaseSalesforceParams { + contactId: string +} + export interface SalesforceDeleteContactResponse { success: boolean output: { @@ -137,7 +217,335 @@ export interface SalesforceDeleteContactResponse { } } -// Report types +export interface SalesforceGetLeadsParams extends BaseSalesforceParams { + leadId?: string + limit?: string + fields?: string + orderBy?: string +} + +export interface SalesforceGetLeadsResponse { + success: boolean + output: { + lead?: any + leads?: any[] + paging?: SalesforcePaging + metadata: { + operation: 'get_leads' + totalReturned?: number + hasMore?: boolean + singleLead?: boolean + } + success: boolean + } +} + +export interface SalesforceCreateLeadParams extends BaseSalesforceParams { + lastName: string + company: string + firstName?: string + email?: string + phone?: string + status?: string + leadSource?: string + title?: string + description?: string +} + +export interface SalesforceCreateLeadResponse { + success: boolean + output: { + id: string + success: boolean + created: boolean + metadata: { + operation: 'create_lead' + } + } +} + +export interface SalesforceUpdateLeadParams extends BaseSalesforceParams { + leadId: string + lastName?: string + company?: string + firstName?: string + email?: string + phone?: string + status?: string + leadSource?: string + title?: string + description?: string +} + +export interface SalesforceUpdateLeadResponse { + success: boolean + output: { + id: string + updated: boolean + metadata: { + operation: 'update_lead' + } + } +} + +export interface SalesforceDeleteLeadParams extends BaseSalesforceParams { + leadId: string +} + +export interface SalesforceDeleteLeadResponse { + success: boolean + output: { + id: string + deleted: boolean + metadata: { + operation: 'delete_lead' + } + } +} + +export interface SalesforceGetOpportunitiesParams extends BaseSalesforceParams { + opportunityId?: string + limit?: string + fields?: string + orderBy?: string +} + +export interface SalesforceGetOpportunitiesResponse { + success: boolean + output: { + opportunity?: any + opportunities?: any[] + paging?: SalesforcePaging + metadata: { + operation: 'get_opportunities' + totalReturned?: number + hasMore?: boolean + } + success: boolean + } +} + +export interface SalesforceCreateOpportunityParams extends BaseSalesforceParams { + name: string + stageName: string + closeDate: string + accountId?: string + amount?: string + probability?: string + description?: string +} + +export interface SalesforceCreateOpportunityResponse { + success: boolean + output: { + id: string + success: boolean + created: boolean + metadata: { + operation: 'create_opportunity' + } + } +} + +export interface SalesforceUpdateOpportunityParams extends BaseSalesforceParams { + opportunityId: string + name?: string + stageName?: string + closeDate?: string + accountId?: string + amount?: string + probability?: string + description?: string +} + +export interface SalesforceUpdateOpportunityResponse { + success: boolean + output: { + id: string + updated: boolean + metadata: { + operation: 'update_opportunity' + } + } +} + +export interface SalesforceDeleteOpportunityParams extends BaseSalesforceParams { + opportunityId: string +} + +export interface SalesforceDeleteOpportunityResponse { + success: boolean + output: { + id: string + deleted: boolean + metadata: { + operation: 'delete_opportunity' + } + } +} + +export interface SalesforceGetCasesParams extends BaseSalesforceParams { + caseId?: string + limit?: string + fields?: string + orderBy?: string +} + +export interface SalesforceGetCasesResponse { + success: boolean + output: { + case?: any + cases?: any[] + paging?: SalesforcePaging + metadata: { + operation: 'get_cases' + totalReturned?: number + hasMore?: boolean + } + success: boolean + } +} + +export interface SalesforceCreateCaseParams extends BaseSalesforceParams { + subject: string + status?: string + priority?: string + origin?: string + contactId?: string + accountId?: string + description?: string +} + +export interface SalesforceCreateCaseResponse { + success: boolean + output: { + id: string + success: boolean + created: boolean + metadata: { + operation: 'create_case' + } + } +} + +export interface SalesforceUpdateCaseParams extends BaseSalesforceParams { + caseId: string + subject?: string + status?: string + priority?: string + description?: string +} + +export interface SalesforceUpdateCaseResponse { + success: boolean + output: { + id: string + updated: boolean + metadata: { + operation: 'update_case' + } + } +} + +export interface SalesforceDeleteCaseParams extends BaseSalesforceParams { + caseId: string +} + +export interface SalesforceDeleteCaseResponse { + success: boolean + output: { + id: string + deleted: boolean + metadata: { + operation: 'delete_case' + } + } +} + +export interface SalesforceGetTasksParams extends BaseSalesforceParams { + taskId?: string + limit?: string + fields?: string + orderBy?: string +} + +export interface SalesforceGetTasksResponse { + success: boolean + output: { + task?: any + tasks?: any[] + paging?: SalesforcePaging + metadata: { + operation: 'get_tasks' + totalReturned?: number + hasMore?: boolean + } + success: boolean + } +} + +export interface SalesforceCreateTaskParams extends BaseSalesforceParams { + subject: string + status?: string + priority?: string + activityDate?: string + whoId?: string + whatId?: string + description?: string +} + +export interface SalesforceCreateTaskResponse { + success: boolean + output: { + id: string + success: boolean + created: boolean + metadata: { + operation: 'create_task' + } + } +} + +export interface SalesforceUpdateTaskParams extends BaseSalesforceParams { + taskId: string + subject?: string + status?: string + priority?: string + activityDate?: string + description?: string +} + +export interface SalesforceUpdateTaskResponse { + success: boolean + output: { + id: string + updated: boolean + metadata: { + operation: 'update_task' + } + } +} + +export interface SalesforceDeleteTaskParams extends BaseSalesforceParams { + taskId: string +} + +export interface SalesforceDeleteTaskResponse { + success: boolean + output: { + id: string + deleted: boolean + metadata: { + operation: 'delete_task' + } + } +} + +export interface SalesforceListReportsParams extends BaseSalesforceParams { + folderName?: string + searchTerm?: string +} + export interface SalesforceListReportsResponse { success: boolean output: { @@ -150,6 +558,10 @@ export interface SalesforceListReportsResponse { } } +export interface SalesforceGetReportParams extends BaseSalesforceParams { + reportId: string +} + export interface SalesforceGetReportResponse { success: boolean output: { @@ -162,26 +574,34 @@ export interface SalesforceGetReportResponse { } } +export interface SalesforceRunReportParams extends BaseSalesforceParams { + reportId: string + includeDetails?: string + filters?: string +} + export interface SalesforceRunReportResponse { success: boolean output: { reportId: string - reportMetadata: any - reportExtendedMetadata: any - factMap: any - groupingsDown: any - groupingsAcross: any - hasDetailRows: boolean - allData: boolean + reportMetadata?: any + reportExtendedMetadata?: any + factMap?: any + groupingsDown?: any + groupingsAcross?: any + hasDetailRows?: boolean + allData?: boolean metadata: { operation: 'run_report' - reportName: string - reportFormat: string + reportName?: string + reportFormat?: string } success: boolean } } +export interface SalesforceListReportTypesParams extends BaseSalesforceParams {} + export interface SalesforceListReportTypesResponse { success: boolean output: { @@ -194,7 +614,10 @@ export interface SalesforceListReportTypesResponse { } } -// Dashboard types +export interface SalesforceListDashboardsParams extends BaseSalesforceParams { + folderName?: string +} + export interface SalesforceListDashboardsResponse { success: boolean output: { @@ -207,6 +630,10 @@ export interface SalesforceListDashboardsResponse { } } +export interface SalesforceGetDashboardParams extends BaseSalesforceParams { + dashboardId: string +} + export interface SalesforceGetDashboardResponse { success: boolean output: { @@ -215,31 +642,38 @@ export interface SalesforceGetDashboardResponse { components: any[] metadata: { operation: 'get_dashboard' - dashboardName: string - folderId: string - runningUser: any + dashboardName?: string + folderId?: string + runningUser?: any } success: boolean } } +export interface SalesforceRefreshDashboardParams extends BaseSalesforceParams { + dashboardId: string +} + export interface SalesforceRefreshDashboardResponse { success: boolean output: { dashboard: any dashboardId: string components: any[] - status: any + status?: any metadata: { operation: 'refresh_dashboard' - dashboardName: string - refreshDate: string + dashboardName?: string + refreshDate?: string } success: boolean } } -// Query types +export interface SalesforceQueryParams extends BaseSalesforceParams { + query: string +} + export interface SalesforceQueryResponse { success: boolean output: { @@ -257,6 +691,10 @@ export interface SalesforceQueryResponse { } } +export interface SalesforceQueryMoreParams extends BaseSalesforceParams { + nextRecordsUrl: string +} + export interface SalesforceQueryMoreResponse { success: boolean output: { @@ -273,20 +711,24 @@ export interface SalesforceQueryMoreResponse { } } +export interface SalesforceDescribeObjectParams extends BaseSalesforceParams { + objectName: string +} + export interface SalesforceDescribeObjectResponse { success: boolean output: { objectName: string - label: string - labelPlural: string - fields: any[] - keyPrefix: string - queryable: boolean - createable: boolean - updateable: boolean - deletable: boolean - childRelationships: any[] - recordTypeInfos: any[] + label?: string + labelPlural?: string + fields?: any[] + keyPrefix?: string + queryable?: boolean + createable?: boolean + updateable?: boolean + deletable?: boolean + childRelationships?: any[] + recordTypeInfos?: any[] metadata: { operation: 'describe_object' fieldCount: number @@ -295,12 +737,14 @@ export interface SalesforceDescribeObjectResponse { } } +export interface SalesforceListObjectsParams extends BaseSalesforceParams {} + export interface SalesforceListObjectsResponse { success: boolean output: { objects: any[] - encoding: string - maxBatchSize: number + encoding?: string + maxBatchSize?: number metadata: { operation: 'list_objects' totalReturned: number @@ -309,7 +753,6 @@ export interface SalesforceListObjectsResponse { } } -// Generic Salesforce response type for the block export type SalesforceResponse = | SalesforceGetAccountsResponse | SalesforceCreateAccountResponse @@ -319,6 +762,22 @@ export type SalesforceResponse = | SalesforceCreateContactResponse | SalesforceUpdateContactResponse | SalesforceDeleteContactResponse + | SalesforceGetLeadsResponse + | SalesforceCreateLeadResponse + | SalesforceUpdateLeadResponse + | SalesforceDeleteLeadResponse + | SalesforceGetOpportunitiesResponse + | SalesforceCreateOpportunityResponse + | SalesforceUpdateOpportunityResponse + | SalesforceDeleteOpportunityResponse + | SalesforceGetCasesResponse + | SalesforceCreateCaseResponse + | SalesforceUpdateCaseResponse + | SalesforceDeleteCaseResponse + | SalesforceGetTasksResponse + | SalesforceCreateTaskResponse + | SalesforceUpdateTaskResponse + | SalesforceDeleteTaskResponse | SalesforceListReportsResponse | SalesforceGetReportResponse | SalesforceRunReportResponse @@ -330,4 +789,3 @@ export type SalesforceResponse = | SalesforceQueryMoreResponse | SalesforceDescribeObjectResponse | SalesforceListObjectsResponse - | { success: boolean; output: any } // Generic for leads, opportunities, cases, tasks diff --git a/apps/sim/tools/salesforce/update_account.ts b/apps/sim/tools/salesforce/update_account.ts index 0affc3937f..32257c0efa 100644 --- a/apps/sim/tools/salesforce/update_account.ts +++ b/apps/sim/tools/salesforce/update_account.ts @@ -1,40 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceUpdateAccountParams, + SalesforceUpdateAccountResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceUpdateAccount') -export interface SalesforceUpdateAccountParams { - accessToken: string - idToken?: string - instanceUrl?: string - accountId: string - name?: string - type?: string - industry?: string - phone?: string - website?: string - billingStreet?: string - billingCity?: string - billingState?: string - billingPostalCode?: string - billingCountry?: string - description?: string - annualRevenue?: string - numberOfEmployees?: string -} - -export interface SalesforceUpdateAccountResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { - operation: 'update_account' - } - } -} - export const salesforceUpdateAccountTool: ToolConfig< SalesforceUpdateAccountParams, SalesforceUpdateAccountResponse diff --git a/apps/sim/tools/salesforce/update_case.ts b/apps/sim/tools/salesforce/update_case.ts index 67f5bdf6cb..abe818a9c1 100644 --- a/apps/sim/tools/salesforce/update_case.ts +++ b/apps/sim/tools/salesforce/update_case.ts @@ -1,27 +1,9 @@ +import type { + SalesforceUpdateCaseParams, + SalesforceUpdateCaseResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceUpdateCaseParams { - accessToken: string - idToken?: string - instanceUrl?: string - caseId: string - subject?: string - status?: string - priority?: string - description?: string -} - -export interface SalesforceUpdateCaseResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { - operation: 'update_case' - } - } -} export const salesforceUpdateCaseTool: ToolConfig< SalesforceUpdateCaseParams, diff --git a/apps/sim/tools/salesforce/update_contact.ts b/apps/sim/tools/salesforce/update_contact.ts index 6d64c705fc..ba3bd1393b 100644 --- a/apps/sim/tools/salesforce/update_contact.ts +++ b/apps/sim/tools/salesforce/update_contact.ts @@ -1,38 +1,13 @@ import { createLogger } from '@/lib/logs/console/logger' +import type { + SalesforceUpdateContactParams, + SalesforceUpdateContactResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' const logger = createLogger('SalesforceContacts') -export interface SalesforceUpdateContactParams { - accessToken: string - idToken?: string - instanceUrl?: string - contactId: string - lastName?: string - firstName?: string - email?: string - phone?: string - accountId?: string - title?: string - department?: string - mailingStreet?: string - mailingCity?: string - mailingState?: string - mailingPostalCode?: string - mailingCountry?: string - description?: string -} - -export interface SalesforceUpdateContactResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { operation: 'update_contact' } - } -} - export const salesforceUpdateContactTool: ToolConfig< SalesforceUpdateContactParams, SalesforceUpdateContactResponse diff --git a/apps/sim/tools/salesforce/update_lead.ts b/apps/sim/tools/salesforce/update_lead.ts index 612189a7b5..e4727db6b2 100644 --- a/apps/sim/tools/salesforce/update_lead.ts +++ b/apps/sim/tools/salesforce/update_lead.ts @@ -1,32 +1,9 @@ +import type { + SalesforceUpdateLeadParams, + SalesforceUpdateLeadResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceUpdateLeadParams { - accessToken: string - idToken?: string - instanceUrl?: string - leadId: string - lastName?: string - company?: string - firstName?: string - email?: string - phone?: string - status?: string - leadSource?: string - title?: string - description?: string -} - -export interface SalesforceUpdateLeadResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { - operation: 'update_lead' - } - } -} export const salesforceUpdateLeadTool: ToolConfig< SalesforceUpdateLeadParams, diff --git a/apps/sim/tools/salesforce/update_opportunity.ts b/apps/sim/tools/salesforce/update_opportunity.ts index 70b2dce0d2..2872daa4cc 100644 --- a/apps/sim/tools/salesforce/update_opportunity.ts +++ b/apps/sim/tools/salesforce/update_opportunity.ts @@ -1,30 +1,9 @@ +import type { + SalesforceUpdateOpportunityParams, + SalesforceUpdateOpportunityResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceUpdateOpportunityParams { - accessToken: string - idToken?: string - instanceUrl?: string - opportunityId: string - name?: string - stageName?: string - closeDate?: string - accountId?: string - amount?: string - probability?: string - description?: string -} - -export interface SalesforceUpdateOpportunityResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { - operation: 'update_opportunity' - } - } -} export const salesforceUpdateOpportunityTool: ToolConfig< SalesforceUpdateOpportunityParams, diff --git a/apps/sim/tools/salesforce/update_task.ts b/apps/sim/tools/salesforce/update_task.ts index 0dd62f824a..3eaa6b4dca 100644 --- a/apps/sim/tools/salesforce/update_task.ts +++ b/apps/sim/tools/salesforce/update_task.ts @@ -1,28 +1,9 @@ +import type { + SalesforceUpdateTaskParams, + SalesforceUpdateTaskResponse, +} from '@/tools/salesforce/types' +import { getInstanceUrl } from '@/tools/salesforce/utils' import type { ToolConfig } from '@/tools/types' -import { getInstanceUrl } from './utils' - -export interface SalesforceUpdateTaskParams { - accessToken: string - idToken?: string - instanceUrl?: string - taskId: string - subject?: string - status?: string - priority?: string - activityDate?: string - description?: string -} - -export interface SalesforceUpdateTaskResponse { - success: boolean - output: { - id: string - updated: boolean - metadata: { - operation: 'update_task' - } - } -} export const salesforceUpdateTaskTool: ToolConfig< SalesforceUpdateTaskParams,