JQ Lang
Um programa jq é um "filtro" que recebe uma entrada e produz uma saída. Existem muitos filtros embutidos para extrair um campo específico de um objeto ou converter um número em uma string ou várias outras tarefas padrão.
Os filtros podem ser combinados de várias maneiras - você pode canalizar a saída de um filtro para outro filtro ou coletar a saída de um filtro em uma matriz.
Alguns filtros produzem múltiplos resultados, por exemplo, há um que produz todos os elementos de sua matriz de entrada. A canalização desse filtro para um segundo executa o segundo filtro para cada elemento da matriz. Geralmente, as coisas que seriam feitas com loops e iterações em outras linguagens são feitas apenas colando filtros em jq.
É importante lembrar que todo filtro tem uma entrada e uma saída. Mesmo literais como "hello" ou 42 são filtros - eles recebem uma entrada, mas sempre produzem o mesmo literal como saída. Operações que combinam dois filtros, como adição, geralmente alimentam a mesma entrada para ambos e combinam os resultados. Portanto, você pode implementar um filtro de média como add / length - alimentando a matriz de entrada tanto para o add filtro quanto para o length filtro e, em seguida, realizando a divisão.
Para mais informações acesse o site oficial do jqlang.
Por padrão as rules são aplicadas usando json logic, então para usar a linguagem jq é preciso informar na estrutura da rule um campo "transformer" com valor "jq" assim como no exemplo a seguir: