MallaDocs

Flujos de trabajo de servidor

Endpoints HTTP, webhooks, crons y eventos de tabla que se ejecutan en el edge, con ejecuciones de prueba en vivo.

Guía de usuario

Los flujos de trabajo de servidor son tu backend: endpoints de API, manejadores de webhooks, tareas programadas y reacciones a cambios en los datos. Usan el mismo editor visual y el mismo modelo de pasos que los flujos de trabajo de cliente, pero se ejecutan en el edge de Cloudflare, pueden usar secretos, escribir en tablas y enviar emails.

Disparadores

HTTP endpointGET, POST, PUT, PATCH o DELETE en https://your-site/api/…, con :params en la ruta.
WebhookUn endpoint POST que verifica firmas de Stripe, GitHub o HMAC antes del primer paso.
CronUna programación de cinco campos en UTC, como 0 9 * * 1 para los lunes a las nueve.
Table eventUna fila insertada, actualizada o eliminada en una tabla nativa.
Called from pagesLos flujos de trabajo de cliente lo ejecutan con Run server workflow, para cualquiera o solo para visitantes con sesión iniciada.
ManualSolo desde ejecuciones de prueba u otro flujo de trabajo de servidor. Las páginas no pueden llamarlo.

Construir uno

En el espacio de trabajo Logic, cambia a los flujos de trabajo de servidor y crea uno. Elige un disparador y agrega pasos. Adentro, input, user y steps están en el ámbito. Return termina la ejecución; en los endpoints, su valor es el cuerpo de la respuesta.

json
{
  "name": "Create order",
  "runtime": "server",
  "trigger": { "type": "http", "method": "POST", "path": "/orders", "auth": "user" },
  "input": { "schema": { "items": "array", "couponCode": "string?" } },
  "steps": [
    { "id": "order", "action": "core.tableInsert",
      "params": { "table": "orders", "values": { "userId": { "$expr": "user.id" }, "items": { "$expr": "input.items" } } } },
    { "id": "mail", "action": "core.sendEmail",
      "params": { "to": { "$expr": "user.email" }, "subject": "Order received", "text": "Thanks!" } },
    { "id": "done", "action": "core.return", "params": { "value": { "$expr": "{ orderId: steps.order.id }" } } }
  ]
}

Una vez publicado, el endpoint queda activo en todos los dominios del entorno:

bash
curl -X POST https://shop.example.com/api/orders \
  -H 'content-type: application/json' \
  -d '{ "items": [{ "sku": "mug", "qty": 2 }] }'

Autenticación de endpoints

  • public: cualquiera puede llamarlo. Los endpoints públicos tienen límite de frecuencia.
  • user: solo visitantes con sesión iniciada; user es quien hace la llamada.
  • apiKey: reservado para llamadas de servidor a servidor (todavía no disponible).

Llamarlo desde una página

Los pasos de integración (OpenAI, Stripe, Resend…) necesitan tus claves secretas, así que solo se ejecutan en flujos de trabajo de servidor. Para usar uno desde un botón o un formulario:

  1. Crea un flujo de trabajo de servidor con el disparador Called from pages. Elige quién puede llamarlo: cualquiera, o solo visitantes con sesión iniciada.
  2. Añade el paso de la integración. Lee lo que envía la página desde input y termina con Return.
  3. En el flujo de trabajo de cliente, añade Run server workflow y elígelo. Su entrada se convierte en input; el valor devuelto queda en steps.<id>.

Run in preview ejecuta el borrador con tu cuenta. Las páginas publicadas ejecutan la versión publicada. Un paso de plugin que quede en un flujo de trabajo de cliente muestra Move to a server workflow, que hace estos pasos por ti.

Ejecuciones de prueba e historial

Presiona Test run con una entrada de ejemplo. Los pasos llegan en vivo al panel de ejecución, con cada resultado y su duración. Las ejecuciones de prueba usan el borrador; las ejecuciones publicadas usan la versión que se publicó, así que las ejecuciones en curso nunca ven tus ediciones. Cada ejecución se guarda en el historial con su estado: running, waiting, succeeded o failed.

Flujos de trabajo de larga duración

Agrega Sleep (de minutos a días) o Wait for event y el flujo de trabajo se vuelve durable automáticamente. Las ejecuciones durables sobreviven a reinicios, reintentan los pasos fallidos con espera progresiva y pueden esperar un enlace de aprobación o una confirmación de pago. Reanuda una ejecución en espera con Emit event desde otro flujo de trabajo. Un endpoint que inicia una ejecución durable responde de inmediato con su runId.

Pasos solo de servidor

  • HTTP request: llama a cualquier API HTTPS; las direcciones privadas están bloqueadas, tiempo de espera de 15 s, límite de 1 MB.
  • Send email: un email transaccional con texto o HTML.
  • Query, get, insert, update, delete row: trabaja con tablas nativas.
  • Set visitor roles: otorga o quita roles a un visitante registrado.
  • Run JavaScript: código aislado con input y steps en el ámbito, sin red y sin secretos.
  • Run operation: llama a una operación de una integración con sus secretos. Para usarla desde una página, consulta Llamarlo desde una página.
  • Run server workflow, Return, Sleep, Wait for event, Emit event.

Cada paso puede definir reintentos (hasta 5) con una espera constante, lineal o exponencial.

Límites

El plan de tu sitio define las ejecuciones por mes y los pasos por ejecución; consulta Planes. Las ejecuciones en línea se detienen después de 30 segundos. Los eventos de tabla que disparan flujos de trabajo que escriben en tablas se detienen después de tres niveles, así un flujo de trabajo no puede entrar en un bucle consigo mismo.