← Public packages
@kody/salesforce
Salesforce REST helpers for identity, SOQL, multi-org routing, and error investigation.
src/describe-sobject.ts
44 lines · 1.6 KB · TypeScriptimport { salesforceJson } from './request.ts'
import type { JsonRecord } from './types.ts'
import { optionalString, requireRecord, requireSObjectName } from './types.ts'
export type DescribeSObjectInput = {
sobject: string
instanceUrl?: string
apiVersion?: string
/** Saved OAuth integration name. Defaults to `salesforce`. */
integrationName?: string
}
/**
* Describe fields and metadata for one Salesforce sObject.
* @param input.sobject - Salesforce sObject API name.
* @returns Describe result for the sObject.
* @example
* import describeSObject from 'kody:@kody/salesforce/describe-sobject'
* const contact = await describeSObject({ sobject: 'Contact' })
*/
export async function describeSObject(input: DescribeSObjectInput): Promise<JsonRecord> {
const sobject = requireSObjectName(input.sobject)
return salesforceJson<JsonRecord>({
path: `sobjects/${sobject}/describe`,
method: 'GET',
instanceUrl: optionalString(input.instanceUrl, 'instanceUrl'),
apiVersion: optionalString(input.apiVersion, 'apiVersion'),
integrationName: optionalString(input.integrationName, 'integrationName'),
})
}
/**
* Describe fields and metadata for one Salesforce sObject.
* @example
* import describeSObject from 'kody:@kody/salesforce/describe-sobject'
* const contact = await describeSObject({ sobject: 'Contact' })
*/
export default async function describeSObjectEntrypoint(
params: Partial<DescribeSObjectInput> & Record<string, unknown> = {},
) {
const input = requireRecord(params, 'describe-sobject')
requireSObjectName(input.sobject)
return describeSObject(input as DescribeSObjectInput)
}