aboutsummaryrefslogtreecommitdiff
path: root/api/src/modules/interactions/interactions.routes.ts
diff options
context:
space:
mode:
authorzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
committerzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
commitef55d9bb24430610b60c1b77821307cd72c08c55 (patch)
treee6935a810b34370b0a4c821e55f6397aac50c832 /api/src/modules/interactions/interactions.routes.ts
downloadhelpdesk-master.tar.gz
helpdesk-master.zip
feat: upload of the projectHEADmaster
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/modules/interactions/interactions.routes.ts')
-rw-r--r--api/src/modules/interactions/interactions.routes.ts86
1 files changed, 86 insertions, 0 deletions
diff --git a/api/src/modules/interactions/interactions.routes.ts b/api/src/modules/interactions/interactions.routes.ts
new file mode 100644
index 0000000..9487fcd
--- /dev/null
+++ b/api/src/modules/interactions/interactions.routes.ts
@@ -0,0 +1,86 @@
+/**
+ * interactions.routes.ts
+ *
+ * Plugin Fastify com as rotas de interação sobre tickets.
+ * Registrado no server.ts com prefixo '/api/v1'.
+ */
+
+import type { FastifyInstance } from 'fastify';
+import {
+ ticketIdParamsSchema,
+ updateTicketStatusBodySchema,
+ assignTicketBodySchema,
+ updateTicketPriorityBodySchema,
+ addCommentBodySchema,
+} from './interactions.schema.js';
+import {
+ updateTicketStatusHandler,
+ assignTicketHandler,
+ updateTicketPriorityHandler,
+ addCommentHandler,
+ listCommentsHandler,
+} from './interactions.controller.js';
+
+async function interactionsRoutes(fastify: FastifyInstance): Promise<void> {
+
+ // ── PATCH /tickets/:ticketId/status ────────────────────────────────────────
+ fastify.patch('/tickets/:ticketId/status', {
+ schema: {
+ tags: ['Interações'],
+ summary: 'Atualiza o status de um chamado',
+ params: ticketIdParamsSchema,
+ body: updateTicketStatusBodySchema,
+ },
+ preHandler: [fastify.authenticate],
+ handler: updateTicketStatusHandler,
+ });
+
+ // ── PATCH /tickets/:ticketId/assign ────────────────────────────────────────
+ fastify.patch('/tickets/:ticketId/assign', {
+ schema: {
+ tags: ['Interações'],
+ summary: 'Atribui ou reatribui um chamado a um agente',
+ params: ticketIdParamsSchema,
+ body: assignTicketBodySchema,
+ },
+ preHandler: [fastify.authenticate],
+ handler: assignTicketHandler,
+ });
+
+ // ── PATCH /tickets/:ticketId/priority ──────────────────────────────────────
+ fastify.patch('/tickets/:ticketId/priority', {
+ schema: {
+ tags: ['Interações'],
+ summary: 'Altera a prioridade de um chamado',
+ params: ticketIdParamsSchema,
+ body: updateTicketPriorityBodySchema,
+ },
+ preHandler: [fastify.authenticate],
+ handler: updateTicketPriorityHandler,
+ });
+
+ // ── POST /tickets/:ticketId/comments ───────────────────────────────────────
+ fastify.post('/tickets/:ticketId/comments', {
+ schema: {
+ tags: ['Interações'],
+ summary: 'Adiciona um comentário (público ou nota interna) no chamado',
+ params: ticketIdParamsSchema,
+ body: addCommentBodySchema,
+ },
+ preHandler: [fastify.authenticate],
+ handler: addCommentHandler,
+ });
+
+ // ── GET /tickets/:ticketId/comments ────────────────────────────────────────
+ fastify.get('/tickets/:ticketId/comments', {
+ schema: {
+ tags: ['Interações'],
+ summary: 'Lista todos os comentários de um chamado',
+ params: ticketIdParamsSchema,
+ },
+ preHandler: [fastify.authenticate],
+ handler: listCommentsHandler,
+ });
+}
+
+export default interactionsRoutes;