const { Documenso } = require("@documenso/sdk-typescript"); const fs = require("fs"); const path = require("path"); const documenso = new Documenso({ apiKey: "api_asojim0czruv13ud",//Done on a by team basis, serverURL: "https://stg-app.documenso.com/api/v2", }); async function esignWebhook(req, res) { console.log("Esign Webhook Received:", req.body); try { const result = await documenso.documents.download({ documentId: req.body.payload.id, }); result.resultingBuffer = Buffer.from(result.resultingArrayBuffer); // Save the document to a file for testing purposes const downloadsDir = path.join(__dirname, '../downloads'); if (!fs.existsSync(downloadsDir)) { fs.mkdirSync(downloadsDir, { recursive: true }); } const filePath = path.join(downloadsDir, `document_${req.body.payload.id}.pdf`); fs.writeFileSync(filePath, result.resultingBuffer); console.log(result) res.sendStatus(200) } catch (err) { const downloadsDir = path.join(__dirname, '../downloads'); if (!fs.existsSync(downloadsDir)) { fs.mkdirSync(downloadsDir, { recursive: true }); } const filePath = path.join(downloadsDir, `document_${req.body.payload.id}.pdf`); fs.writeFileSync(filePath, Buffer.from(err.body)); console.error("Error handling esign webhook:", err); res.sendStatus(500) } } module.exports = { esignWebhook } // const sampleBody = { // event: "DOCUMENT_COMPLETED", // payload: { // Recipient: [ // { // authOptions: { // accessAuth: [ // ], // actionAuth: [ // ], // }, // documentDeletedAt: null, // documentId: 9827, // email: "patrick@imexsystems.ca", // expired: null, // id: 13311, // name: "Customer Fullname", // readStatus: "OPENED", // rejectionReason: null, // role: "SIGNER", // sendStatus: "SENT", // signedAt: "2026-01-30T18:29:12.648Z", // signingOrder: null, // signingStatus: "SIGNED", // templateId: null, // token: "uiEWIsXUPTbWHd7QedVgt", // }, // ], // authOptions: { // globalAccessAuth: [ // ], // globalActionAuth: [ // ], // }, // completedAt: "2026-01-30T18:29:16.279Z", // createdAt: "2026-01-30T18:28:48.861Z", // deletedAt: null, // documentMeta: { // allowDictateNextSigner: false, // dateFormat: "yyyy-MM-dd hh:mm a", // distributionMethod: "EMAIL", // drawSignatureEnabled: true, // emailSettings: { // documentCompleted: true, // documentDeleted: true, // documentPending: true, // ownerDocumentCompleted: true, // recipientRemoved: false, // recipientSigned: true, // recipientSigningRequest: true, // }, // id: "cml17vfb200qjad1t2spxnc1n", // language: "en", // message: "To perform repairs on your vehicle, we must receive digital authorization. Please review and sign the document to proceed with repairs. ", // redirectUrl: null, // signingOrder: "PARALLEL", // subject: "Repair Authorization for ABC Collision", // timezone: "Etc/UTC", // typedSignatureEnabled: true, // uploadSignatureEnabled: true, // }, // externalId: null, // formValues: null, // id: 9827, // recipients: [ // { // authOptions: { // accessAuth: [ // ], // actionAuth: [ // ], // }, // documentDeletedAt: null, // documentId: 9827, // email: "patrick@imexsystems.ca", // expired: null, // id: 13311, // name: "Customer Fullname", // readStatus: "OPENED", // rejectionReason: null, // role: "SIGNER", // sendStatus: "SENT", // signedAt: "2026-01-30T18:29:12.648Z", // signingOrder: null, // signingStatus: "SIGNED", // templateId: null, // token: "uiEWIsXUPTbWHd7QedVgt", // }, // ], // source: "DOCUMENT", // status: "COMPLETED", // teamId: 742, // templateId: null, // title: "Repair Authorization - 1/30/2026, 6:28:48 PM", // updatedAt: "2026-01-30T18:29:16.280Z", // userId: 654, // visibility: "EVERYONE", // }, // createdAt: "2026-01-30T18:29:18.504Z", // webhookEndpoint: "https://dev.patrickfic.com/esign/webhook", // }