Início rápido de Transforms
Do zero a um pipeline versionado em poucos minutos. Você vai testar um pipeline em uma requisição, salvá-lo, executá-lo, ver uma requisição ser descartada e salvar uma nova versão. Para ver o que um pipeline faz antes de entrar com a sua conta, experimente o playground.
Antes de começar
Crie uma chave de API no seu console da conta, com Transforms como produto e Read & write como permissão. O Free é suficiente para tudo o que está aqui. Depois, coloque a chave em uma variável de ambiente:
export TRANSFORMS_API_KEY="<your-api-key>"Todos os caminhos abaixo são relativos a https://transforms.nimbusnexus.net, e toda requisição leva Authorization: Bearer <your key>.
1. Testar um pipeline
Este pipeline mantém as faturas pagas de $1,000 ou mais, remove o e-mail do cliente e qualquer número de telefone, e adiciona dois campos e um header. POST /v1/pipelines/test executa um documento uma vez, sobre uma requisição que você envia, e não salva nem conta 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 é ok, então body e headers são o que deve ser enviado. version é null porque nada foi salvo ainda.
2. Salvar o pipeline
Salve o mesmo documento como um pipeline, com um nome:
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 }}" } } }
]
}
}'A resposta é 201 com o pipeline, resumida aqui:
{
"id": "pipe_8e27d40b19c3f6a5e0d71b42",
"name": "Paid invoices",
"status": "enabled",
"current_version": 1,
"destinations": [],
"consumers": []
}Guarde o id: todas as chamadas seguintes o recebem.
export PIPELINE_ID="pipe_8e27d40b19c3f6a5e0d71b42"3. Executar o pipeline
Envie uma requisição para o pipeline salvo. A execução recebe um body e, opcionalmente, headers e meta, e responde o que o pipeline fez:
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"}}}'A resposta tem o mesmo formato da resposta do teste, com "version": 1. Nada da requisição é guardado, e a execução soma um à contagem do mês em GET /v1/usage. Enviar o resultado adiante cabe a você: o Transforms não envia nada por conta própria.
4. Ver uma requisição descartada
Envie uma fatura abaixo do valor do 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
}Continua sendo um 200, porque o pipeline rodou. step conta a partir de 0, e reason é no_match para um filtro ao qual a requisição não correspondeu. Neste caso, não envie nada.
5. Salvar uma nova versão
Faça um PATCH no pipeline com um documento novo, aqui sem a etapa de headers:
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 agora é 2, e as execuções usam essa versão. A versão 1 não mudou: GET /v1/pipelines/{id}/versions lista as versões mantidas, e uma execução ainda pode indicar uma delas:
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 voltar à versão 1, salve o conteúdo dela de novo, o que faz dele a versão 3.
No console
O console em https://transforms.nimbusnexus.net faz tudo isso com um formulário para cada etapa: Filter, Remove fields, Set fields, Reshape the body, Headers e Credential. Start from a template oferece mensagens do Slack, do Discord e do Teams, Keep only these fields e Drop personal data, e JSON mostra o documento inteiro. Teste o que está no editor antes de salvar.
Limpeza
Cada plano limita quantos pipelines você pode ter, então exclua este quando terminar:
curl -X DELETE "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY"A exclusão é permanente, para o pipeline e para todas as versões dele. Para, em vez disso, impedir que ele rode por um tempo, faça um PATCH nele com {"status": "disabled"} e, mais tarde, outro com {"status": "enabled"}. Um pipeline desativado responde a uma execução com 409 conflict, pipeline_disabled.
Próximos passos
- Pipelines — todas as etapas, caminhos, filtros e templates.
- Referência de Transforms — todas as rotas e campos, funções, limites e erros.
- API de Transforms — todas as operações, com a requisição em curl, TypeScript, Python ou Go.
- Visão geral do produto — credenciais, planos e o que o Transforms não faz.