Consulta de criação de cards com GraphQL

  • 10 August 2021
  • 7 replies
  • 1142 views

Userlevel 2

Bom dia!

Gostaria de saber como posso obter as informações do pipe ou cards como id dos campos e etc. A intenção é obter as informações necessárias para criar uma query que crie um card usando a API. Tentei a consulta abaixa mais sem sucesso:

payload = {"query": "{card(id:\"438346960\")}"}

 

Estou usando python.


7 replies

Userlevel 7
Badge +4

Opa tudo bem @houston-santos ?

Podes executar esta query aqui:

{"query": """{
allCards(pipeId: ******************) {
edges { node { id fields { name value } createdAt}
} pageInfo {endCursor startCursor}}
}"""}

O seu pipe ID é o que aparece na URL quando está dentro do pipe.

Qualquer dúvida só me mencionar aqui que posso ajudar.

Userlevel 7
Badge +4

Caso queria outros dados, e apertar um tab na IDE ele te sugere todos os comandos disponíveis para aquela hierarquia que tu está. 

Userlevel 2

Grato pelo retorno @tsartori!

 

Gostaria de tirar mais algumas duvidas. Eu conseguir realizar a criação do card usando a query abaixo, adicionando { card { id title url } } ao final, tipo colocando o return, bem diferente do que encontrei aqui no forum e na documentação, é isto mesmo tem que passar está informação?

query que vejo no forum: 

payload = {"query": "mutation { createCard ( input: { pipe_id: \"XXXXXXXX\" fields_attributes: [ { field_id: \"what_needs_to_be_done\", field_value: \"NOVO TESTE\" } { field_id: \"estimate\", field_value: \"1\" } { field_id: \"more_information\", field_value: \"REALISANDO NOVO TESTE\" } { field_id: \"type\", field_value: \"305585433\" } ] } ) }" }

e a query que utilizei, sem isso me da um erro:

payload = {"query": "mutation { createCard ( input: { pipe_id: \"XXXXXXXX\" fields_attributes: [ { field_id: \"what_needs_to_be_done\", field_value: \"NOVO TESTE\" } { field_id: \"estimate\", field_value: \"1\" } { field_id: \"more_information\", field_value: \"REALISANDO NOVO TESTE\" } { field_id: \"type\", field_value: \"305585433\" } ] } ) { card { id title url } } }" }

 

É possível realizar a criação de card usando webhook(consumir) no lugar da API?

 

Em relação a sua resposta; "Caso queria outros dados, e apertar um tab na IDE ele te sugere todos os comandos disponíveis para aquela hierarquia que tu está." seria tipo a imagem em anexo. não conseguir entender o tab, se for isso no VScode não rola, é diferente, ou seria outro recurso?

 

Userlevel 7
Badge +4

Opa, @houston-santos vamos lá.

Eu nunca tentei usar webhook para alimentar, mas creio que não seja possível pela maneira com que o graphql é estruturado.

Sobre tua query, nao achei nenhum erro, mas utilizo pouco este processo de mutation, então não sou a melhor pessoa do mundo para te ajudar. 

 

Userlevel 7
Badge +4

Esqueci de mencionar o ultimo ponto

Sobre o tab, achei que estivesse usando a IDE de testar as querys do próprio Pipefy, lá ele te disponibiliza as possibilidades, mas está direto no VS Code

Userlevel 7
Badge +4

Opa, @houston-santos vamos lá.

Eu nunca tentei usar webhook para alimentar, mas creio que não seja possível pela maneira com que o graphql é estruturado.

Sobre tua query, nao achei nenhum erro, mas utilizo pouco este processo de mutation, então não sou a melhor pessoa do mundo para te ajudar. 

 

Talvez se tentar fazer o mutation através de um json funcione melhor.

Userlevel 4

@houston-santos 
Como você está utilizando python, você vai precisar passar um parâmetro para receber o retorno do card criado, a response. Quando criei a minha mutation, utilizei o seguinte: {clientMutationId card {id title }} , você precisa passar esta instrução ao final, para que funcione.

Se não a utilizar, você receberá este erro:

{"errors":[{"message":"Field must have selections (field 'createCard' returns CreateCardPayload but has no selections. Did you mean 'createCard { ... }'?)","locations":[{"line":1,"column":11}],"path":["mutation","createCard"],"extensions":{"code":"selectionMismatch","nodeName":"field 'createCard'","typeName":"CreateCardPayload"}}]}


Quando criei a minha mutation, utilizei o seguinte com python:

import requests

url = https://api.pipefy.com/graphql

payload = {"query": "mutation{ createCard( input: { pipe_id: \"ID_PIPE\" fields_attributes: [     {field_id: \"id_field_1\", field_value: \"Colaborador Libraport\"}   {field_id: \"id_field_2\", field_value: \"404475106\"}   {field_id: \"id_field_3\", field_value: \"id_field_4\"}   {field_id: \"contato\", field_value: \"id_field_5\"}   {field_id: \"id_field_6\", field_value: \"id_field_7\"}   {field_id: \"id_field_8\", field_value: \"id_field_9\"}   {field_id: \"id_field_10\", field_value: \"id_field_11\"}   {field_id: \"id_field_12\", field_value: \"id_field_13\"} ] } ) {clientMutationId card {id title }}}"}

headers = {

"Authorization": "Bearer ID_BEARER",

"Content-Type": "application/json"

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)

Já realizei consultas com cards, através de webhooks, mas não tentei criação ainda. Mas acredito que desde que você passe os headers corretos, e adapte de query para mutation, você não terá problemas.

 

Quando utilizei o webhook, o payload foi bem simples:
const body = {"query": "{card(id: \"id_card\") {phases_history {phase {name}firstTimeIn lastTimeOut}}}"}

 

e o header foi:
headers = {

"Authorization": "Bearer ID_BEARER",

"Content-Type": "application/json"

Lembrando que o Bearer precisa estar escrito desta forma, antes do bearer_id em si.

Reply