/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/live/sync
NameSizeModeActions
route.js14850644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/live/sync/route.js (1485B)
const { prisma } = require("../../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../../lib/request-context"); const { hasPermission } = require("../../../../../../domain/permissions"); const { jsonResponse, errorResponse } = require("../../../../../../lib/http"); const { liveSync } = require("../../../../../../services/integration-service"); async function requireIntegrationAccess(request, integrationId) { const actor = await getActorFromRequest(request); const integration = await prisma.integration.findUnique({ where: { id: integrationId }, include: { workspace: true } }); if (!integration) { const error = new Error(`Integration not found: ${integrationId}`); error.status = 404; throw error; } const membership = actor.memberships.find(m => m.organizationId === integration.workspace.organizationId && m.status === "ACTIVE"); if (!membership || !hasPermission(membership.role.permissions, "integration:manage")) { const error = new Error("Permission denied: integration:manage"); error.status = 403; throw error; } return { actor, integration }; } export async function POST(request, { params }) { try { const { integrationId } = await params; const { actor } = await requireIntegrationAccess(request, integrationId); const result = await liveSync(integrationId, actor, request); return jsonResponse(result, 201); } catch (error) { return errorResponse(error); } }