Skip to content
← Public packages

@kody/salesforce

Salesforce REST helpers for identity, SOQL, multi-org routing, and error investigation.

src/list-sobjects.ts

49 lines · 1.5 KB · TypeScript
import { salesforceJson } from './request.ts'
import type { JsonRecord } from './types.ts'
import { optionalString, requireRecord } from './types.ts'

export type ListSObjectsInput = {
	instanceUrl?: string
	apiVersion?: string
	/** Saved OAuth integration name. Defaults to `salesforce`. */
	integrationName?: string
}

export type ListSObjectsResult = {
	encoding: string
	maxBatchSize: number
	sobjects: JsonRecord[]
	[key: string]: unknown
}

/**
 * List sObjects available to the connected Salesforce user.
 * @param input - Optional integrationName / instanceUrl overrides.
 * @returns Catalog of available sObjects.
 * @example
 * import listSObjects from 'kody:@kody/salesforce/list-sobjects'
 * const catalog = await listSObjects()
 */
export async function listSObjects(
	input: ListSObjectsInput = {},
): Promise<ListSObjectsResult> {
	return salesforceJson<ListSObjectsResult>({
		path: 'sobjects',
		method: 'GET',
		instanceUrl: optionalString(input.instanceUrl, 'instanceUrl'),
		apiVersion: optionalString(input.apiVersion, 'apiVersion'),
		integrationName: optionalString(input.integrationName, 'integrationName'),
	})
}

/**
 * List sObjects available to the connected Salesforce user.
 * @example
 * import listSObjects from 'kody:@kody/salesforce/list-sobjects'
 * const catalog = await listSObjects()
 */
export default async function listSObjectsEntrypoint(
	params: Partial<ListSObjectsInput> & Record<string, unknown> = {},
) {
	return listSObjects(requireRecord(params, 'list-sobjects') as ListSObjectsInput)
}