From 155bb3eebf618c6f085c0297295f2e01970258a2 Mon Sep 17 00:00:00 2001 From: Isaac_Aracena Date: Sun, 9 Aug 2026 04:01:33 +0000 Subject: [PATCH] =?UTF-8?q?Update=20backup:=20GLM=20Hub=20-=20Solicitudes?= =?UTF-8?q?=20de=20acceso=20y=20aprobaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ub-solicitudes-de-acceso-y-aprobacion.json | 424 +++++++++++++----- 1 file changed, 308 insertions(+), 116 deletions(-) diff --git a/glm-hub-solicitudes-de-acceso-y-aprobacion.json b/glm-hub-solicitudes-de-acceso-y-aprobacion.json index 086605e..26a2603 100644 --- a/glm-hub-solicitudes-de-acceso-y-aprobacion.json +++ b/glm-hub-solicitudes-de-acceso-y-aprobacion.json @@ -1,5 +1,5 @@ { - "updatedAt": "2026-07-30T22:15:55.410Z", + "updatedAt": "2026-08-06T17:47:19.077Z", "createdAt": "2026-07-29T13:08:05.444Z", "id": "RaNkDfE2YCrZgCbx", "name": "GLM Hub - Solicitudes de acceso y aprobación", @@ -21,8 +21,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 208 + -928, + 192 ], "webhookId": "ad3e98b9-baf2-400f-90e7-dcd4c5c20457" }, @@ -35,8 +35,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 208 + -704, + 192 ] }, { @@ -69,8 +69,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - -336, - 208 + -480, + 192 ] }, { @@ -94,8 +94,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - -112, - 368 + -160, + 352 ] }, { @@ -137,8 +137,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - -112, - 128 + 304, + 112 ] }, { @@ -150,8 +150,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 784, - 48 + 1440, + 64 ] }, { @@ -184,8 +184,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 1024, - 48 + 1680, + 64 ] }, { @@ -203,8 +203,8 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.1, "position": [ - 1264, - -48 + 1920, + -32 ], "webhookId": "7dc65e7b-4fb6-4a2f-b685-34171dd9ce1a", "credentials": { @@ -235,8 +235,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 1504, - -48 + 2160, + -32 ] }, { @@ -260,8 +260,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 1264, - 160 + 1920, + 176 ] }, { @@ -275,8 +275,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 672 + 432, + 896 ], "webhookId": "cba1c38c-37bc-4acb-bd61-48035604a5c4" }, @@ -289,8 +289,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 672 + 656, + 896 ] }, { @@ -322,8 +322,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - -336, - 672 + 880, + 896 ] }, { @@ -338,8 +338,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 1040 + -544, + 1584 ], "webhookId": "54eeee1b-b24b-46ae-84dc-70c4103e3a3a" }, @@ -352,8 +352,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 1040 + -320, + 1584 ] }, { @@ -386,8 +386,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - -336, - 1040 + -96, + 1584 ] }, { @@ -399,8 +399,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -112, - 1232 + 128, + 1776 ] }, { @@ -432,8 +432,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 128, - 1232 + 368, + 1776 ] }, { @@ -479,8 +479,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - -112, - 960 + 128, + 1504 ] }, { @@ -492,8 +492,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 128, - 960 + 1344, + 1520 ] }, { @@ -526,8 +526,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 368, - 960 + 1584, + 1520 ] }, { @@ -545,8 +545,8 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.1, "position": [ - 608, - 864 + 1824, + 1424 ], "webhookId": "234c8e3b-b904-41b8-8a74-9ca835f759df", "credentials": { @@ -585,8 +585,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 848, - 960 + 2064, + 1520 ] }, { @@ -598,8 +598,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 96, - 128 + 512, + 112 ] }, { @@ -632,8 +632,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 320, - 128 + 736, + 112 ] }, { @@ -679,9 +679,105 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - 544, - 48 + 1200, + 64 ] + }, + { + "parameters": { + "content": "## 1. RECEPCIÓN Y VALIDACIÓN\n\nEste bloque recibe desde GLM Hub una nueva solicitud de acceso y valida que la información obligatoria sea correcta.\n\n- Verifica los datos del usuario y de la aplicación solicitada.\n- Rechaza inmediatamente solicitudes incompletas o inválidas.\n- Solo las solicitudes válidas continúan hacia el registro en Supabase.", + "height": 560, + "width": 1104, + "color": 6 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1024, + -16 + ], + "id": "55489511-4594-4d60-8b68-87f0210e4b9e", + "name": "Sticky Note" + }, + { + "parameters": { + "content": "## 2. REGISTRO DE LA SOLICITUD\n\nGuarda la solicitud de acceso en Supabase y confirma que el registro se haya creado correctamente.\n\n- Almacena la información de la solicitud y su estado inicial.\n- Recupera y normaliza los datos devueltos por Supabase.\n- Solo permite continuar cuando existe una confirmación válida del registro.", + "height": 384, + "width": 736, + "color": 5 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 192, + -64 + ], + "id": "729f2bb0-c1f2-424f-ae39-bf69ea94317c", + "name": "Sticky Note1" + }, + { + "parameters": { + "content": "## 3. ENVÍO A LOS APROBADORES\n\nGenera los enlaces de decisión, prepara los correos y notifica a las personas responsables de aprobar o rechazar la solicitud.\n\n- Construye enlaces únicos para la aprobación y el rechazo.\n- Genera el contenido personalizado de los correos.\n- Envía la solicitud a los aprobadores mediante Gmail.\n- Confirma al GLM Hub que la solicitud fue enviada correctamente.\n- Devuelve un error controlado si no fue posible completar el registro.", + "height": 560, + "width": 1264, + "color": "#357C27" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 1104, + -224 + ], + "id": "32a9a9ad-bd7c-4d67-93db-d6537fd3a978", + "name": "Sticky Note2" + }, + { + "parameters": { + "content": "## 4. CONFIRMACIÓN DE LA DECISIÓN\n\nRecibe al aprobador desde el enlace enviado por correo y muestra una página previa antes de registrar la decisión definitiva.\n\n- Lee los parámetros incluidos en el enlace de aprobación o rechazo.\n- Construye una página con los datos de la solicitud.\n- Solicita una confirmación final para evitar decisiones accidentales.", + "height": 352, + "width": 1062, + "color": "#8F622D" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 192, + 720 + ], + "id": "305bb9cd-16f5-4f87-a3b4-f6009a683085", + "name": "Sticky Note3" + }, + { + "parameters": { + "content": "## 5. VALIDACIÓN Y REGISTRO DE LA DECISIÓN\n\nValida la decisión confirmada por el aprobador y actualiza la solicitud correspondiente en Supabase.\n\n- Comprueba que la solicitud, el enlace y la decisión sean válidos.\n- Registra en Supabase la aprobación o el rechazo.\n- Impide procesar decisiones incorrectas, incompletas o manipuladas.\n- Muestra una respuesta controlada cuando la decisión no puede ser aceptada.", + "height": 624, + "width": 1184, + "color": "#52500F" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -624, + 1328 + ], + "id": "0289d494-ec4a-4f09-89ed-02006e0fcc4e", + "name": "Sticky Note4" + }, + { + "parameters": { + "content": "## 6. NOTIFICACIÓN Y RESULTADO FINAL\n\nPrepara el resultado de la decisión, determina si se necesita intervención de IT Support y finaliza el proceso.\n\n- Construye el mensaje final de aprobación o rechazo.\n- Evalúa si la decisión debe notificarse al equipo de IT.\n- Envía por Gmail la información necesaria cuando corresponde.\n- Muestra al aprobador el resultado definitivo de la operación.", + "height": 432, + "width": 1104, + "color": "#276D4F" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 1184, + 1264 + ], + "id": "7881e095-8b12-4b96-83fd-a174d8dd0703", + "name": "Sticky Note5" } ], "connections": { @@ -950,9 +1046,9 @@ "meta": { "templateCredsSetupCompleted": true }, - "versionId": "a4528c24-f544-4063-9bda-2b04c9943a97", - "activeVersionId": "a4528c24-f544-4063-9bda-2b04c9943a97", - "versionCounter": 72, + "versionId": "dc3ed690-5728-414e-a322-137e35e8f9b6", + "activeVersionId": "dc3ed690-5728-414e-a322-137e35e8f9b6", + "versionCounter": 137, "triggerCount": 3, "shared": [ { @@ -975,9 +1071,9 @@ ], "tags": [], "activeVersion": { - "updatedAt": "2026-07-29T15:29:25.000Z", - "createdAt": "2026-07-29T15:29:15.992Z", - "versionId": "a4528c24-f544-4063-9bda-2b04c9943a97", + "updatedAt": "2026-08-06T17:47:21.000Z", + "createdAt": "2026-08-06T17:47:19.081Z", + "versionId": "dc3ed690-5728-414e-a322-137e35e8f9b6", "workflowId": "RaNkDfE2YCrZgCbx", "nodes": [ { @@ -994,8 +1090,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 208 + -928, + 192 ], "webhookId": "ad3e98b9-baf2-400f-90e7-dcd4c5c20457" }, @@ -1008,8 +1104,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 208 + -704, + 192 ] }, { @@ -1042,8 +1138,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - -336, - 208 + -480, + 192 ] }, { @@ -1067,8 +1163,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - -112, - 368 + -160, + 352 ] }, { @@ -1110,8 +1206,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - -112, - 128 + 304, + 112 ] }, { @@ -1123,8 +1219,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 784, - 48 + 1440, + 64 ] }, { @@ -1157,8 +1253,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 1024, - 48 + 1680, + 64 ] }, { @@ -1176,8 +1272,8 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.1, "position": [ - 1264, - -48 + 1920, + -32 ], "webhookId": "7dc65e7b-4fb6-4a2f-b685-34171dd9ce1a", "credentials": { @@ -1208,8 +1304,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 1504, - -48 + 2160, + -32 ] }, { @@ -1233,8 +1329,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 1264, - 160 + 1920, + 176 ] }, { @@ -1248,8 +1344,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 672 + 432, + 896 ], "webhookId": "cba1c38c-37bc-4acb-bd61-48035604a5c4" }, @@ -1262,8 +1358,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 672 + 656, + 896 ] }, { @@ -1295,8 +1391,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - -336, - 672 + 880, + 896 ] }, { @@ -1311,8 +1407,8 @@ "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ - -784, - 1040 + -544, + 1584 ], "webhookId": "54eeee1b-b24b-46ae-84dc-70c4103e3a3a" }, @@ -1325,8 +1421,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -560, - 1040 + -320, + 1584 ] }, { @@ -1359,8 +1455,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - -336, - 1040 + -96, + 1584 ] }, { @@ -1372,8 +1468,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - -112, - 1232 + 128, + 1776 ] }, { @@ -1405,8 +1501,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 128, - 1232 + 368, + 1776 ] }, { @@ -1452,8 +1548,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - -112, - 960 + 128, + 1504 ] }, { @@ -1465,8 +1561,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 128, - 960 + 1344, + 1520 ] }, { @@ -1499,8 +1595,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 368, - 960 + 1584, + 1520 ] }, { @@ -1518,8 +1614,8 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.1, "position": [ - 608, - 864 + 1824, + 1424 ], "webhookId": "234c8e3b-b904-41b8-8a74-9ca835f759df", "credentials": { @@ -1558,8 +1654,8 @@ "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.4, "position": [ - 848, - 960 + 2064, + 1520 ] }, { @@ -1571,8 +1667,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 96, - 128 + 512, + 112 ] }, { @@ -1605,8 +1701,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 320, - 128 + 736, + 112 ] }, { @@ -1652,9 +1748,105 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - 544, - 48 + 1200, + 64 ] + }, + { + "parameters": { + "content": "## 1. RECEPCIÓN Y VALIDACIÓN\n\nEste bloque recibe desde GLM Hub una nueva solicitud de acceso y valida que la información obligatoria sea correcta.\n\n- Verifica los datos del usuario y de la aplicación solicitada.\n- Rechaza inmediatamente solicitudes incompletas o inválidas.\n- Solo las solicitudes válidas continúan hacia el registro en Supabase.", + "height": 560, + "width": 1104, + "color": 6 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1024, + -16 + ], + "id": "55489511-4594-4d60-8b68-87f0210e4b9e", + "name": "Sticky Note" + }, + { + "parameters": { + "content": "## 2. REGISTRO DE LA SOLICITUD\n\nGuarda la solicitud de acceso en Supabase y confirma que el registro se haya creado correctamente.\n\n- Almacena la información de la solicitud y su estado inicial.\n- Recupera y normaliza los datos devueltos por Supabase.\n- Solo permite continuar cuando existe una confirmación válida del registro.", + "height": 384, + "width": 736, + "color": 5 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 192, + -64 + ], + "id": "729f2bb0-c1f2-424f-ae39-bf69ea94317c", + "name": "Sticky Note1" + }, + { + "parameters": { + "content": "## 3. ENVÍO A LOS APROBADORES\n\nGenera los enlaces de decisión, prepara los correos y notifica a las personas responsables de aprobar o rechazar la solicitud.\n\n- Construye enlaces únicos para la aprobación y el rechazo.\n- Genera el contenido personalizado de los correos.\n- Envía la solicitud a los aprobadores mediante Gmail.\n- Confirma al GLM Hub que la solicitud fue enviada correctamente.\n- Devuelve un error controlado si no fue posible completar el registro.", + "height": 560, + "width": 1264, + "color": "#357C27" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 1104, + -224 + ], + "id": "32a9a9ad-bd7c-4d67-93db-d6537fd3a978", + "name": "Sticky Note2" + }, + { + "parameters": { + "content": "## 4. CONFIRMACIÓN DE LA DECISIÓN\n\nRecibe al aprobador desde el enlace enviado por correo y muestra una página previa antes de registrar la decisión definitiva.\n\n- Lee los parámetros incluidos en el enlace de aprobación o rechazo.\n- Construye una página con los datos de la solicitud.\n- Solicita una confirmación final para evitar decisiones accidentales.", + "height": 352, + "width": 1062, + "color": "#8F622D" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 192, + 720 + ], + "id": "305bb9cd-16f5-4f87-a3b4-f6009a683085", + "name": "Sticky Note3" + }, + { + "parameters": { + "content": "## 5. VALIDACIÓN Y REGISTRO DE LA DECISIÓN\n\nValida la decisión confirmada por el aprobador y actualiza la solicitud correspondiente en Supabase.\n\n- Comprueba que la solicitud, el enlace y la decisión sean válidos.\n- Registra en Supabase la aprobación o el rechazo.\n- Impide procesar decisiones incorrectas, incompletas o manipuladas.\n- Muestra una respuesta controlada cuando la decisión no puede ser aceptada.", + "height": 624, + "width": 1184, + "color": "#52500F" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -624, + 1328 + ], + "id": "0289d494-ec4a-4f09-89ed-02006e0fcc4e", + "name": "Sticky Note4" + }, + { + "parameters": { + "content": "## 6. NOTIFICACIÓN Y RESULTADO FINAL\n\nPrepara el resultado de la decisión, determina si se necesita intervención de IT Support y finaliza el proceso.\n\n- Construye el mensaje final de aprobación o rechazo.\n- Evalúa si la decisión debe notificarse al equipo de IT.\n- Envía por Gmail la información necesaria cuando corresponde.\n- Muestra al aprobador el resultado definitivo de la operación.", + "height": 432, + "width": 1104, + "color": "#276D4F" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 1184, + 1264 + ], + "id": "7881e095-8b12-4b96-83fd-a174d8dd0703", + "name": "Sticky Note5" } ], "connections": { @@ -1915,15 +2107,15 @@ } }, "authors": "Isaac Aracena", - "name": "Version a4528c24", + "name": "Version dc3ed690", "description": "", - "autosaved": true, + "autosaved": false, "workflowPublishHistory": [ { - "createdAt": "2026-07-29T15:29:25.705Z", - "id": 3624, + "createdAt": "2026-08-06T17:47:21.133Z", + "id": 4229, "workflowId": "RaNkDfE2YCrZgCbx", - "versionId": "a4528c24-f544-4063-9bda-2b04c9943a97", + "versionId": "dc3ed690-5728-414e-a322-137e35e8f9b6", "event": "activated", "userId": "0a88c0b1-928e-4412-896e-c5d1c99b2029" }