From 490a1b6009120e45982cc553d6c735d3e4d4047f Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Thu, 1 Feb 2024 20:18:55 -0800 Subject: [PATCH] Add missing integrations.info endpoint (#6474) --- .../routes/api/integrations/integrations.ts | 22 ++++++++++++++++++- server/routes/api/integrations/schema.ts | 9 ++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/server/routes/api/integrations/integrations.ts b/server/routes/api/integrations/integrations.ts index f45a6a485..5a2546d56 100644 --- a/server/routes/api/integrations/integrations.ts +++ b/server/routes/api/integrations/integrations.ts @@ -7,7 +7,7 @@ import validate from "@server/middlewares/validate"; import { Event, IntegrationAuthentication } from "@server/models"; import Integration from "@server/models/Integration"; import { authorize } from "@server/policies"; -import { presentIntegration } from "@server/presenters"; +import { presentIntegration, presentPolicies } from "@server/presenters"; import { APIContext } from "@server/types"; import pagination from "../middlewares/pagination"; import * as T from "./schema"; @@ -72,6 +72,26 @@ router.post( } ); +router.post( + "integrations.info", + auth(), + validate(T.IntegrationsInfoSchema), + async (ctx: APIContext) => { + const { id } = ctx.input.body; + const { user } = ctx.state.auth; + + const integration = await Integration.findByPk(id, { + rejectOnEmpty: true, + }); + authorize(user, "read", integration); + + ctx.body = { + data: presentIntegration(integration), + policies: presentPolicies(user, [integration]), + }; + } +); + router.post( "integrations.update", auth({ admin: true }), diff --git a/server/routes/api/integrations/schema.ts b/server/routes/api/integrations/schema.ts index e0b1c5d65..47ffc645f 100644 --- a/server/routes/api/integrations/schema.ts +++ b/server/routes/api/integrations/schema.ts @@ -81,6 +81,15 @@ export const IntegrationsUpdateSchema = BaseSchema.extend({ export type IntegrationsUpdateReq = z.infer; +export const IntegrationsInfoSchema = BaseSchema.extend({ + body: z.object({ + /** Id of integration to find */ + id: z.string().uuid(), + }), +}); + +export type IntegrationsInfoReq = z.infer; + export const IntegrationsDeleteSchema = BaseSchema.extend({ body: z.object({ /** Id of integration to be deleted */