Pipory
Node reference

Salesforce

Salesforce node reference - all 80 operations, the credential it needs, and a worked example.

Salesforce REST API (CRM). 80 operations: records on any standard, custom or packaged object (create, get, update, upsert, delete, by external ID, related records, replication windows); convenience creates for Lead, Contact, Account, Opportunity, Case and Task plus lead assignment rules; SOQL and SOSL query and search; record collections and composite requests; Bulk API 2.0 load and export jobs; invocable actions, flows, Apex actions, email alerts and quick actions; approval processes and workflow rules; describe, list views, org limits and platform events.

Credential: Salesforce instance URL + access token - see Credentials.

Permissions

Salesforce's OAuth scopes partition the platform by API PRODUCT, never by operation and never by object. The complete enumerated list (Mobile SDK Scope Parameter Values, cross-checked against the ConnectedAppOauthAccessScope enum in the Metadata API's ConnectedApp) contains no CRUD-level, verb-level or object-level scope at all: one scope, api ("Manage user data via APIs"), grants the entire REST API, Bulk API 2.0 and Connect REST surface, and full merely encompasses it. Every operation on this node would therefore print the same word. The scopes that ARE distinct name separate products this node does not touch - wave_api (Analytics), cdp_query_api (Data Cloud), pardot_api, sfap_api (Models). What actually decides whether a call succeeds is the layer underneath: the token's USER must hold the API Enabled permission, and can then "query or update only those objects and fields to which they have access via the permissions of the logged-in user" - object CRUD permissions, field-level security and sharing rules, set on a Profile or Permission Set in Setup. So a 403 here is a Setup problem, not a checkbox on the connected app. Four named user permissions gate specific operations rather than whole objects: View Setup and Configuration for getLimits and runNamedQuery, Manage Data Integrations to abort a Bulk job someone else created, and Bulk API Hard Delete for the hard-delete job operation this node deliberately does not offer. One more gate is not a permission at all: the stored access token is a session token that expires on the org's own schedule and this credential does not refresh it, so a 401 is usually an aged-out token rather than anything to grant.

Operations (80)

Records

OperationWhat it does
createRecordCreate record
getRecordGet record by ID
updateRecordUpdate record
upsertRecordUpsert record by external ID
deleteRecordDelete record
getRecordByExternalIdGet record by external ID
deleteRecordByExternalIdDelete record by external ID
getRelatedRecordsGet related records
getUpdatedRecordsGet IDs updated in a time window
getDeletedRecordsGet IDs deleted in a time window

Standard objects

OperationWhat it does
createLeadCreate lead
createContactCreate contact
createAccountCreate account
createOpportunityCreate opportunity
createCaseCreate case
createTaskCreate task
applyLeadAssignmentRulesApply lead assignment rules
OperationWhat it does
queryRun SOQL query
queryMoreGet next page of a query
queryAllRun SOQL including deleted records
findRecordsFind records (guided query)
queryRelatedQuery related records
searchRun SOSL search
parameterizedSearchSearch without SOSL syntax
runNamedQueryRun a named query

Record collections (up to 200)

OperationWhat it does
collectionCreateCreate many records
collectionRetrieveRetrieve many records by ID
collectionUpdateUpdate many records
collectionUpsertUpsert many records by external ID
collectionDeleteDelete many records
createRecordTreeCreate a parent-child record tree

Composite requests

OperationWhat it does
compositeRun dependent subrequests
compositeBatchRun independent subrequests
compositeGraphRun subrequest graphs

Bulk API 2.0 — load data

OperationWhat it does
createIngestJobCreate an ingest job
uploadJobDataUpload CSV to an ingest job
closeIngestJobClose an ingest job (start processing)
abortIngestJobAbort an ingest job
getIngestJobGet ingest job status
listIngestJobsList ingest jobs
getIngestSuccessfulResultsGet successfully loaded rows
getIngestFailedResultsGet failed rows
getIngestUnprocessedRecordsGet unprocessed rows
deleteIngestJobDelete an ingest job

Bulk API 2.0 — export data

OperationWhat it does
createQueryJobCreate a query job
getQueryJobGet query job status
getQueryJobResultsGet query job results
listQueryJobsList query jobs
abortQueryJobAbort a query job
deleteQueryJobDelete a query job

Actions & flows

OperationWhat it does
listActionsList action types
listStandardActionsList standard actions
describeStandardActionDescribe a standard action
invokeStandardActionInvoke a standard action
sendEmailSend an email
listCustomActionsList custom actions
listFlowActionsList invocable flows
describeFlowActionDescribe a flow's inputs
invokeFlowInvoke a flow
invokeApexActionInvoke an Apex action
invokeEmailAlertSend an email alert
listQuickActionsList an object's quick actions
describeQuickActionDescribe a quick action
invokeQuickActionInvoke a quick action

Approvals & process rules

OperationWhat it does
listApprovalsList approval processes
submitForApprovalSubmit a record for approval
approveRecordApprove a pending record
rejectRecordReject a pending record
listProcessRulesList workflow rules
triggerProcessRulesTrigger all workflow rules on records
triggerProcessRuleTrigger one specific workflow rule

Metadata & org

OperationWhat it does
describeObjectDescribe an object
describeGlobalList all objects
getObjectBasicInfoGet an object's basic metadata
listListViewsList an object's list views
describeListViewDescribe a list view
getListViewResultsGet list view results
getLimitsGet org limits
listApiVersionsList available API versions
publishPlatformEventPublish a platform event

Example

Create a Lead without discovering its required fields by trial and error

Salesforce's REST API is generic over sObjects — there is no /leads route, only /sobjects/{Type} — so a node that just took "object type + JSON" would be honest but unhelpful: createRecord on Lead fails with a bare REQUIRED_FIELD_MISSING until you happen to know Salesforce demands LastName and Company. createLead is createRecord with the object pinned and those two promoted to named inputs, so the form teaches what the API will insist on.

Set Operation to createLead, then fill in:

FieldValueNotes
lastName{{ myTrigger.lastName }}Required by Salesforce, not by us
company{{ myTrigger.company }}Also required — a Lead with no Company is rejected
firstName{{ myTrigger.firstName }}Optional
email{{ myTrigger.email }}Optional
fieldsJson{"LeadSource": "Webhook", "Rating": "Warm"}Anything else, including custom fields — merged under the named ones

Sets {{lead.id}} (the 18-character Salesforce id) and {{lead.success}}. A 401 here is reported as INVALID_SESSION_ID with that name, because the stored token is a session token this credential does not refresh — it is an expiry, not a permissions problem.