fields enviado passa a ser a configuração completa da fase — não é possível adicionar ou remover um campo isoladamente, o conjunto inteiro precisa ser reenviado a cada chamada.id no array enviado. Omitir o id de um campo existente não o remove permanentemente: a API marca esse campo como active:false e index:null, preservando o histórico de valores já preenchidos pelos cards. Para adicionar um campo novo, envie o objeto sem id — a API gera o identificador.type aceita um conjunto fixo de valores: shortText, longText, attachment, checkList, select, radio, date, number, currency, email, document, phone, year, percentage, cropYear, float, hour, currencyWithSelect e cep. O valor money não é aceito neste contexto: uma tentativa de uso retorna erro 404 (Field type money not found) — utilize currency para valores monetários.help é o texto de orientação exibido ao usuário. O campo description, por sua vez, é gerado automaticamente pela API e não deve ser enviado com um valor customizado.select, radio ou checkList recebem suas opções através do campo options, sempre como um array de strings simples — nunca como um array de objetos {label, value}.sectionMetadata em todo campo, mesmo quando a fase tiver uma única seção: isso agrupa os campos visualmente e mantém a exibição consistente na interface.uiComponent e rules não são aceitos neste payload. uiComponent é derivado automaticamente a partir de type, e as regras condicionais entre campos são configuradas através do endpoint dedicado de regras (PUT .../fields/rules), que deve ser chamado em uma etapa posterior.curl --location --request PUT '/v1/flows//phases//fields' \
--header 'Content-Type: application/json' \
--data '{
"fields": {
"fields": [
{
"name": "Status da Documentação",
"type": "select",
"help": "Indica se os documentos estão completos.",
"required": true,
"index": 1,
"editable": true,
"active": true,
"category": "default",
"options": [
"Completo",
"Pendente"
],
"sectionMetadata": {
"sectionId": "sec_triagem",
"sectionTitle": "Triagem",
"sectionIndex": 1
}
},
{
"name": "Observações",
"type": "longText",
"help": "Texto livre.",
"required": false,
"index": 2,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_triagem",
"sectionTitle": "Triagem",
"sectionIndex": 1
}
},
{
"name": "Limite Sugerido",
"type": "number",
"help": "Valor em moeda local.",
"required": false,
"index": 3,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_analise",
"sectionTitle": "Análise",
"sectionIndex": 2
}
},
{
"name": "Data de Vencimento",
"type": "date",
"help": "Data limite.",
"required": false,
"index": 4,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_analise",
"sectionTitle": "Análise",
"sectionIndex": 2
}
}
]
}
}'{
"fields": [
{
"id": "string",
"name": "string",
"type": "string",
"help": "string",
"required": true,
"editable": true,
"active": true,
"category": "string",
"index": 0,
"sectionMetadata": {},
"options": [
"string"
]
}
]
}