/
home
/
techb158
/
balavpn.abdallabala.com
/
src
/
app
/
api
/
integrations
/
[integrationId]
/
discover
/
/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/discover
mkdir
upload
Name
Size
Mode
Actions
route.js
1503
0644
edit
dl
rm
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); } }
Save
cmd:
run