Inicio rápido de Transforms
De cero a una pipeline con versiones en unos minutos. Vas a probar una pipeline con una petición, guardarla, ejecutarla, ver cómo se descarta una petición y guardar una versión nueva. Para ver lo que hace una pipeline antes de iniciar sesión, prueba el playground.
Antes de empezar
Crea una clave de API en tu consola de la cuenta, con Transforms como producto y Read & write como permiso. Free basta para todo lo que hay aquí. Después, pon la clave en una variable de entorno:
export TRANSFORMS_API_KEY="<your-api-key>"Todas las rutas siguientes son relativas a https://transforms.nimbusnexus.net, y todas las peticiones llevan Authorization: Bearer <your key>.
1. Prueba una pipeline
Esta pipeline mantiene las facturas pagadas de $1,000 o más, quita el email del cliente y cualquier número de teléfono, y añade dos campos y una cabecera. POST /v1/pipelines/test ejecuta un documento una vez, con una petición que envías, y no guarda ni cuenta nada:
curl -X POST https://transforms.nimbusnexus.net/v1/pipelines/test \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } },
{ "headers": { "set": { "X-Event-Type": "{{ type }}" } } }
]
},
"body": {
"type": "invoice.paid",
"data": {
"id": "in_42",
"amount": 150000,
"currency": "usd",
"customer": { "name": "Ana Silva", "email": "[email protected]", "phone": "+1 202 555 0142" }
}
}
}'{
"status": "ok",
"version": null,
"body": {
"type": "invoice.paid",
"data": {
"id": "in_42",
"amount": 150000,
"currency": "usd",
"customer": { "name": "Ana Silva" }
},
"event_type": "invoice.paid",
"amount_display": "1,500.00 USD"
},
"body_changed": true,
"headers": { "X-Event-Type": "invoice.paid" },
"query": {},
"step": null,
"note": null,
"reason": null,
"error": null,
"duration_ms": 0.4
}status es ok, así que body y headers son lo que hay que enviar. version es null porque todavía no se ha guardado nada.
2. Guárdala
Guarda el mismo documento como pipeline, con un nombre:
curl -X POST https://transforms.nimbusnexus.net/v1/pipelines \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Paid invoices",
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } },
{ "headers": { "set": { "X-Event-Type": "{{ type }}" } } }
]
}
}'La respuesta es 201 con la pipeline, recortada aquí:
{
"id": "pipe_8e27d40b19c3f6a5e0d71b42",
"name": "Paid invoices",
"status": "enabled",
"current_version": 1,
"destinations": [],
"consumers": []
}Guarda el id: todas las llamadas posteriores lo usan.
export PIPELINE_ID="pipe_8e27d40b19c3f6a5e0d71b42"3. Ejecútala
Envía una petición a la pipeline guardada. La ejecución acepta un body y, opcionalmente, headers y meta, y responde con lo que hizo la pipeline:
curl -X POST "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID/run" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body": {"type": "invoice.paid", "data": {"id": "in_42", "amount": 150000, "currency": "usd"}}}'La respuesta tiene la misma forma que la de la prueba, con "version": 1. No se guarda nada de la petición, y la ejecución suma una al recuento del mes en GET /v1/usage. Enviar el resultado es cosa tuya: Transforms no envía nada por sí mismo.
4. Mira cómo se descarta una petición
Envía una factura por debajo del importe del filtro:
curl -X POST "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID/run" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body": {"type": "invoice.paid", "data": {"id": "in_43", "amount": 99999, "currency": "usd"}}}'{
"status": "dropped",
"version": 1,
"body": null,
"body_changed": false,
"headers": {},
"query": {},
"step": 0,
"note": "Paid invoices of $1,000 or more",
"reason": "no_match",
"error": "dropped by step 0 (Paid invoices of $1,000 or more)",
"duration_ms": 0.1
}Sigue siendo un 200, porque la pipeline se ejecutó. step cuenta desde 0, y reason es no_match para un filtro con el que la petición no coincidió. En este caso, no envíes nada.
5. Guarda una versión nueva
Haz PATCH de la pipeline con un documento nuevo, aquí sin el paso de cabeceras:
curl -X PATCH "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } }
]
}
}'current_version ahora es 2, y las ejecuciones usan esa versión. La versión 1 no ha cambiado: GET /v1/pipelines/{id}/versions lista las versiones guardadas, y una ejecución todavía puede nombrar una de ellas:
curl -X POST "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID/run" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"version": 1, "body": {"type": "invoice.paid", "data": {"id": "in_42", "amount": 150000, "currency": "usd"}}}'Para volver a la versión 1, guarda de nuevo su contenido, lo que la convierte en la versión 3.
En la consola
La consola en https://transforms.nimbusnexus.net hace todo esto con un formulario para cada paso: Filter, Remove fields, Set fields, Reshape the body, Headers y Credential. Start from a template ofrece mensajes de Slack, Discord y Teams, Keep only these fields y Drop personal data, y JSON muestra el documento completo. Prueba lo que hay en el editor antes de guardarlo.
Limpieza
Cada plan limita cuántas pipelines puedes tener, así que borra esta cuando termines:
curl -X DELETE "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY"Borrar es permanente, para la pipeline y para todas sus versiones. Para que deje de ejecutarse durante un tiempo, haz PATCH de la pipeline con {"status": "disabled"}, y más adelante vuelve a {"status": "enabled"}. Una pipeline desactivada responde a una ejecución con 409 conflict, pipeline_disabled.
Próximos pasos
- Pipelines — todos los pasos, rutas, filtros y plantillas.
- Referencia de Transforms — todas las rutas y campos, roles, límites y errores.
- API de Transforms — todas las operaciones, con la petición en curl, TypeScript, Python o Go.
- Resumen del producto — credenciales, planes y lo que no hace Transforms.