Update backup: GLM Hub - Solicitudes de acceso y aprobación

This commit is contained in:
2026-08-09 04:01:33 +00:00
parent b41d78a0c0
commit 155bb3eebf
+308 -116
View File
@@ -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"
}