Skip to main content
Question

BUG - API / Parent Relations

  • August 25, 2025
  • 2 replies
  • 66 views

brennovn

Em alguns casos não consigo obter os dados de um cartão pai quando a requisição é feita corretamente.

Tenho um pipe chamado [Geral] Propriedade, outro chamado [Propriedade] Item e outro chamado [Suprimento] Estoque Previsto de Obra/Manutenção.

Existe um campo chamado Itens, do tipo Pipe connection, no pipe [Geral] Propriedade que cria cartões no pipe [Propriedade] Item.

A criação do cartão no pipe [Propriedade] Item dispara um webhook que cria um cartão no pipe [Suprimento] Estoque Previsto de Obra/Manutenção.

O problema é que em alguns casos aleatórios eu não consigo acessar o que eu preciso através do PARENT RELATIONS, conforme evidência abaixo:
 

 

 


Por exemplo, de todos os cartões que aparecem na imagem imediatamente acima, apenas o cartão destacado em vermelho não teve o cartão criado no pipe [Suprimento] Estoque Previsto de Obra/Manutenção. Além dele, outros 2 cartões, que não aparecem na imagem, também não foram criados.

Alguém já teve a mesma experiência? Se sim, como contornou?

2 replies

adrian-villegas

Olá, Brennovn! Tudo bem?

Para te ajudar com essa consulta, é importante entender como o Pipefy estrutura a hierarquia entre cards conectados:

parent_relations: Este campo lista os cards que são pais do card que você está consultando. Ou seja, ele mostra de onde este card "veio" (onde ele é o filho).

child_relations: Este é o campo que você deve utilizar para listar todos os cards que foram criados a partir do card atual, ou seja, os filhos.

Por que o card pode estar "faltando"? Se você estiver buscando os filhos de um card usando o objeto parent_relations, a resposta virá vazia ou incompleta, pois a API está olhando para o nível acima na hierarquia, e não para o nível abaixo.

Espero que isso ajude a ajustar sua integração! Qualquer dúvida, conte com a gente.


Alan dOliveira
Pipefy Staff
Forum|alt.badge.img+1

Ola ​@brennovn bom dia tudo bem?, pelo o que estou entendendo é que isso acontece algumas vezes e não todas, isso parece um cenario de que o timming de criação é rapido demais para a conexão. 

 

Quando você cria um cartão filho (no pipe [Propriedade] Item) conectado a um pai (no pipe [Geral] Propriedade), duas coisas acontecem quase simultaneamente, mas em transações de banco de dados ligeiramente diferentes:

  1. O cartão filho é criado.

  2. A conexão entre o filho e o pai é estabelecida.

O Webhook "Card Create" dispara no exato milissegundo em que a criação ocorre. Muitas vezes, o passo 2 (vínculo) leva alguns milissegundos ou segundos a mais para ser processado e indexado pela API.

Como resultado:

  • O Webhook envia os dados do cartão, mas o campo parent_relations ainda está vazio no payload inicial, pois o vínculo ainda não foi "comitado" no momento do disparo.

  • Ao olhar na interface (UI) segundos depois, o vínculo aparece corretamente, pois houve tempo para o sistema processar.


     

Para contornar isso 

você deve forçar o cenário a esperar a indexação da conexão antes de tentar ler os dados do pai.

Baseado no seu fluxo atual na imagem 1, sugiro os seguintes ajustes:

  1. Ignore os dados de relação do Trigger: Não utilize os dados vindos do módulo parent_relations do gatilho inicial (o Webhook), pois eles não são confiáveis para conexões recém-criadas.

  2. Aumente o tempo do Sleep: Vi que você já tem um módulo "Tools - Sleep" configurado para 5 segundos. Em momentos de alta carga no Pipefy, 5 segundos pode ser pouco.

    • Recomendação: Aumente esse Sleep para 30 ou 45 segundos. Isso garante margem de segurança para que a conexão seja estabelecida.

  3. Use a Query GraphQL para buscar os dados (Re-query):

    • Logo após o Sleep, você tem um módulo "Execute a GraphQL Query". Certifique-se de que este módulo está fazendo uma query pedindo especificamente o parent_relations do cartão novamente.

    • Importante: Nos módulos seguintes e nos filtros, use apenas os dados resultantes deste módulo (Module 3 - GraphQL Query), e não os dados do Webhook inicial.


      Nesse passo 3 tente algo como o GraphQL abaixo:

      {
      card(id: "ID_DO_CARTAO_DO_WEBHOOK") {
      title
      parent_relations {
      cards {
      id
      title
      pipe {
      id
      name
      }
      }
      }
      }
      }

Veja se deu certo alguma dessas soluções!