Solved

Python Mutation - Create Card

  • 29 January 2021
  • 2 replies
  • 1174 views

Userlevel 4

olá pessoal!

Estou tentando criar um script em Python, para criar cards no Pipefy, porém, não estou tendo sucesso. Com o método atual, consigo apenas erros 404 ou 400. Se utilizo requests.get, obtenho 200, mas o card não é criado.

 

Há algum erro no código abaixo?

 

import requests
import json


url = 'https://app.pipefy.com/graphiql'

query = '''{"query": "mutation{createCard(input:{pipe_id: \"301493880\" fields_attributes: [{field_id: \"colaborador_libraport_ou_externo_terceirizado\", field_value: \"Colaborador Libraport\"} {field_id: \"solicitante\", field_value: \"404475106\"} {field_id: \"por_favor_informe_seu_nome\", field_value: \"Dinobot\"} {field_id: \"contato\", field_value: \"+55 19 1234-5678\"} {field_id: \"selecione_um_servi_o\", field_value: \"Telefonia\"} {field_id: \"equipamento_de_telefonia\", field_value: \"Contact Center – Call\"} {field_id: \"op_es_telefonia\", field_value: \"Configuração\"}]})}"}'''

headers = {
'Content-Type': 'application/json',
'Authorization': 'Mytoken123'
}

r = requests.post(url, data=query, headers=headers)

print (r.status_code)
print (r.text)


 

Se eu utilizo a query, na API do GraphiQL, consigo criar um card com sucesso.

mutation{
createCard(
input: {
pipe_id: "301493880"
fields_attributes: [
{field_id: "colaborador_libraport_ou_externo_terceirizado", field_value: "Colaborador Libraport"}
{field_id: "solicitante", field_value: "404475106"}
{field_id: "por_favor_informe_seu_nome", field_value: "Dinobot"}
{field_id: "contato", field_value: "+55 19 1234-5678"}
{field_id: "selecione_um_servi_o", field_value: "Telefonia"}
{field_id: "equipamento_de_telefonia", field_value: "Contact Center – Call"}
{field_id: "op_es_telefonia", field_value: "Configuração"}
{field_id: "descreva_sua_solicita_o", field_value: "Dinobot criar sabe"}
]
}
)
}

 

Desde já agradeço a ajuda!

 

 

icon

Best answer by Roberto Chavarria 2 February 2021, 13:57

View original

2 replies

Userlevel 6
Badge +5

Olá Diego, tudo bem? Segue o código correto:

 

import requests

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

payload = {"query": "mutation{ createCard( input: { pipe_id: \"301493880\" fields_attributes: [ {field_id: \"colaborador_libraport_ou_externo_terceirizado\", field_value: \"Colaborador Libraport\"} {field_id: \"solicitante\", field_value: \"404475106\"} {field_id: \"por_favor_informe_seu_nome\", field_value: \"Dinobot\"} {field_id: \"contato\", field_value: \"+55 19 1234-5678\"} {field_id: \"selecione_um_servi_o\", field_value: \"Telefonia\"} {field_id: \"equipamento_de_telefonia\", field_value: \"Contact Center – Call\"} {field_id: \"op_es_telefonia\", field_value: \"Configuração\"} {field_id: \"descreva_sua_solicita_o\", field_value: \"Dinobot criar sabe\"} ] } ) }"}
headers = {
"Authorization": "Bearer abc123456",
"Content-Type": "application/json"
}

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

print(response.text)

 

Userlevel 4

@Roberto Chavarria 

 

Obrigado pelo apoio! Apenas um adendo, utilizar apenas esta faixa do código gerava o seguinte 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"}}]}

 

Porém, como é uma mutation, basta trazer esta parte ao final da query para criar um card com sucesso:

 

{clientMutationId card {id title }}}"}

 

Ao final, a Query ficou assim:

payload = {"query": "mutation{ createCard( input: { pipe_id: \"301493880\" fields_attributes: [     {field_id: \"colaborador_libraport_ou_externo_terceirizado\", field_value: \"Colaborador Libraport\"}   {field_id: \"solicitante\", field_value: \"404475106\"}   {field_id: \"por_favor_informe_seu_nome\", field_value: \"Dinobot\"}   {field_id: \"contato\", field_value: \"+55 19 1234-5678\"}   {field_id: \"selecione_um_servi_o\", field_value: \"Telefonia\"}   {field_id: \"equipamento_de_telefonia\", field_value: \"Contact Center – Calabrio\"}   {field_id: \"op_es_telefonia\", field_value: \"Configuração\"}   {field_id: \"descreva_sua_solicita_o\", field_value: \"Dinobot criar sabe\"} ] } ) {clientMutationId card {id title }}}"}

 

Obrigado!

Reply