/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/discover
NameSizeModeActions
route.js15030644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/discover/route.js (1503B)
const { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { hasPermission } = require("../../../../../domain/permissions"); const { jsonResponse, errorResponse } = require("../../../../../lib/http"); const { loadIntegrationCredentials } = require("../../../../../services/integration-service"); const { discoverIntegrationResources } = require("../../../../../integrations/pm-clients"); export async function GET(request, { params }) { try { const { integrationId } = await params; const actor = await getActorFromRequest(request); const integration = await prisma.integration.findUnique({ where: { id: integrationId }, include: { workspace: true } }); if (!integration) { return errorResponse(Object.assign(new Error("Integration not found"), { status: 404 })); } const membership = actor.memberships.find(m => m.organizationId === integration.workspace.organizationId && m.status === "ACTIVE"); if (!membership || !hasPermission(membership.role.permissions, "integration:manage")) { return errorResponse(Object.assign(new Error("Permission denied: integration:manage"), { status: 403 })); } const credentials = await loadIntegrationCredentials(integration); const resources = await discoverIntegrationResources(integration.provider, credentials); return jsonResponse({ resources }); } catch (error) { return errorResponse(error); } }