/** * Common Salesforce Provider Types * * Generic Salesforce API response structures used across multiple domains. */ import { z } from "zod"; // ============================================================================ // Salesforce Query Response (Generic SOQL Response) // ============================================================================ /** * Base schema for Salesforce SOQL query result */ // Base schema uses z.unknown() for records because it is always overridden by // salesforceResponseSchema() which extends records with the caller's typed schema. const salesforceResponseBaseSchema = z.object({ totalSize: z.number(), done: z.boolean(), records: z.array(z.unknown()), }); type SalesforceResponseBase = z.infer; /** * Generic type for Salesforce query results derived from schema * All SOQL queries return this structure regardless of SObject type * * Usage: SalesforceResponse */ export type SalesforceResponse = Omit & { records: TRecord[]; }; /** * Schema factory for validating Salesforce query responses * Usage: salesforceResponseSchema(salesforceOrderRecordSchema) */ export const salesforceResponseSchema = (recordSchema: TRecord) => salesforceResponseBaseSchema.extend({ records: z.array(recordSchema), });