/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/live/sync
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);
}
}