Olhando o forum em ingles entendi como fazer (nesse topico) e segue para quem estiver com a mesma dúvida:
Primeiro, no python, quando for mandar o payload, precisa identificar que é uma query antes:
payload = '{"query":"{ pipe(id: seu_id) { start_form_fields{ id uuid label type required } }}"}'
url = "https://api.pipefy.com/graphql"
headers = {
"authorization": f"Bearer {seu_token}",
"content-type": "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
sua response vai te dar algo assim:
:{'id': 'clientes', 'uuid': 'e03e7118-bb44-41f4-aa23-448a39b5fb84', 'label': 'Clientes', 'type': 'select', 'required': True}]
Com esses valores de id e uuid voce faz um novo request, que no https://app.pipefy.com/graphiql é assim:
mutation {
updatePhaseField(input:{
id:"clientes",
uuid:"e03e7118-bb44-41f4-aa23-448a39b5fb84",
label:"Clientes",
required: true,
options: i“Primeiro Cliente”, “Segundo Cliente”]
}){
phase_field{
id
uuid
label
required
}
}
}
mas no python, dentro do mutation, você tem que se atentar a colocar \ antes de cada “, alem de indicar que é uma r string:
payload = r'{"query":"mutation { updatePhaseField(input:{ id:\"clientes\", uuid:\"e03e7118-bb44-41f4-aa23-448a39b5fb84\", label:\"Clientes\", required: true, options: d\"Primeiro Cliente\",\"Segundo Cliente\" ] }}{ phase_field{ id uuid label required } } }"}'
Como eu vou precisar fazer update dinamico de varios campos e me perdi pra caramba nesse negocio de /”, tentei encapsular numa função, mas ainda tem muito espaço pra melhoria:
def update_field_options(field_id, field_uuid, field_label, options_array):
options_value = r",".join(e'\\"'+option+'\\"' for option in options_array])
options_value = r"o"+options_value+"]"
mutation = fr"""mutation (
updatePhaseField#input:(
id:\"{field_id}\",
uuid:\"{field_uuid}\",
label:\"{field_label}\",
required: true,
options: {options_value}
)$(
phase_field(
id
uuid
label
required
)
)
)
"""
adjusted_mutation= mutation.replace('\n','').replace('(','{').replace(')','}').replace('#','(').replace("$",")")
payload = '{"query":"'+adjusted_mutation+'"}'
response = requests.request("POST", url, data=payload, headers=headers)
Com isso funcionou aqui \o/
Boa! Sempre tem alguma coisa no fórum em inglês.