import { loopGet, loopPut, withTeamKey } from "../lib/loop-api.js"; type AutoResponderAction = "get" | "answers" | "details" | "refer"; // Loop API V2: enquiry auto-responder endpoints (Loop's stated 40% efficiency lever) // GET /marketing/enquiries/auto-responder/{id}/{key} — read questions + details // PUT /marketing/enquiries/auto-responder/{id}/answers/{key} — submit applicant answers // PUT /marketing/enquiries/auto-responder/{id}/details/{key} — update enquiry details // PUT /marketing/enquiries/auto-responder/{id}/refer/{key} — refer enquiry to another team // `id` is the enquiry id, `key` is the UUID handed out at enquiry creation. interface LoopBooleanResponse { success?: boolean; [key: string]: unknown; } interface LoopAutoResponderDetails { id?: number; questions?: unknown[]; enquiryDetails?: unknown; [key: string]: unknown; } export async function autoResponder(params: { accountId: string; teamName: string; action: AutoResponderAction; autoResponderId: number; autoResponderKey: string; answers?: unknown[]; details?: Record; }): Promise { const { accountId, teamName, action, autoResponderId: id, autoResponderKey: key } = params; if (action === "get") { const result = await withTeamKey( accountId, teamName, "marketing", "loop-auto-responder", async (apiKey) => loopGet( apiKey, `/marketing/enquiries/auto-responder/${id}/${key}`, "loop-auto-responder", teamName ) ); return JSON.stringify(result, null, 2); } if (action === "answers") { await withTeamKey( accountId, teamName, "marketing", "loop-auto-responder", async (apiKey) => loopPut( apiKey, `/marketing/enquiries/auto-responder/${id}/answers/${key}`, params.answers ?? [], "loop-auto-responder", teamName ) ); return `Auto-responder answers submitted for enquiry ${id} via team "${teamName}".`; } if (action === "details") { await withTeamKey( accountId, teamName, "marketing", "loop-auto-responder", async (apiKey) => loopPut( apiKey, `/marketing/enquiries/auto-responder/${id}/details/${key}`, params.details ?? {}, "loop-auto-responder", teamName ) ); return `Auto-responder details updated for enquiry ${id} via team "${teamName}".`; } if (action === "refer") { await withTeamKey( accountId, teamName, "marketing", "loop-auto-responder", async (apiKey) => loopPut( apiKey, `/marketing/enquiries/auto-responder/${id}/refer/${key}`, {}, "loop-auto-responder", teamName ) ); return `Enquiry ${id} referred via team "${teamName}".`; } throw new Error(`Unknown auto-responder action: ${action}`); }