import { defineLogicFunction, type RoutePayload } from "twenty-sdk/define"; import { Response } from "twenty-sdk/logic-function"; import { CREATE_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER } from "src/constants/universal-identifiers"; import { createSajnDocumentHandler, type CreateSajnDocumentInput, } from "src/logic-functions/handlers/create-sajn-document-handler"; import { jsonResponse } from "src/logic-functions/utils/json-response"; import { SajnApiError } from "src/logic-functions/utils/sajn-api"; import { getSajnConnectionForRequest } from "src/logic-functions/utils/sajn-connection"; const handler = async ( event: RoutePayload, ): Promise => { try { const connection = await getSajnConnectionForRequest(event); const result = await createSajnDocumentHandler( event.body ?? ({} as CreateSajnDocumentInput), connection.accessToken, ); return jsonResponse( result, result.success ? 200 : (result.status ?? 400), ); } catch (error) { const status = error instanceof SajnApiError ? error.status : 500; const message = error instanceof Error ? error.message : "Could not create the sajn document."; return jsonResponse({ success: false, message }, status); } }; export default defineLogicFunction({ universalIdentifier: CREATE_DOCUMENT_ROUTE_UNIVERSAL_IDENTIFIER, name: "create-sajn-document", description: "Creates a sajn document from a Twenty opportunity and stores the linked CRM record.", timeoutSeconds: 30, handler, httpRouteTriggerSettings: { path: "/sajn/documents", httpMethod: "POST", isAuthRequired: true, }, });