← Public packages
@kody/salesforce
Salesforce REST helpers for identity, SOQL, multi-org routing, and error investigation.
src/get-record.ts
67 lines · 2.0 KB · TypeScriptimport { salesforceJson } from './request.ts'
import type { JsonRecord } from './types.ts'
import {
optionalString,
requireRecord,
requireSalesforceId,
requireSObjectName,
} from './types.ts'
export type GetRecordInput = {
sobject: string
id: string
/** Optional comma-separated field list. */
fields?: string
instanceUrl?: string
apiVersion?: string
/** Saved OAuth integration name. Defaults to `salesforce`. */
integrationName?: string
}
/**
* Fetch one Salesforce record by sObject API name and id.
* @param input.sobject - Salesforce sObject API name.
* @param input.id - Record id.
* @param input.fields - Optional comma-separated field list.
* @returns Record field map.
* @example
* import getRecord from 'kody:@kody/salesforce/get-record'
* const contact = await getRecord({
* sobject: 'Contact',
* id: '003XXXXXXXXXXXXXXX',
* fields: 'Id,Name,Email',
* })
*/
export async function getRecord(input: GetRecordInput): Promise<JsonRecord> {
const sobject = requireSObjectName(input.sobject)
const id = requireSalesforceId(input.id)
const fields = optionalString(input.fields, 'fields')
return salesforceJson<JsonRecord>({
path: `sobjects/${sobject}/${id}`,
method: 'GET',
query: fields ? { fields } : undefined,
instanceUrl: optionalString(input.instanceUrl, 'instanceUrl'),
apiVersion: optionalString(input.apiVersion, 'apiVersion'),
integrationName: optionalString(input.integrationName, 'integrationName'),
})
}
/**
* Fetch one Salesforce record by sObject API name and id.
* @example
* import getRecord from 'kody:@kody/salesforce/get-record'
* const contact = await getRecord({
* sobject: 'Contact',
* id: '003XXXXXXXXXXXXXXX',
* fields: 'Id,Name,Email',
* })
*/
export default async function getRecordEntrypoint(
params: Partial<GetRecordInput> & Record<string, unknown> = {},
) {
const input = requireRecord(params, 'get-record')
requireSObjectName(input.sobject)
requireSalesforceId(input.id)
return getRecord(input as GetRecordInput)
}