fields array you send becomes the complete configuration of the phase — you cannot add or remove a single field in isolation, the entire set must be resent on every call.id in the array you send. Omitting the id of an existing field does not delete it permanently: the API marks that field as active:false and index:null, preserving the history of values already filled in on cards. To add a new field, send the object without an id — the API generates the identifier.type field accepts a fixed set of values: shortText, longText, attachment, checkList, select, radio, date, number, currency, email, document, phone, year, percentage, cropYear, float, hour, currencyWithSelect, and cep. The value money is not accepted in this context: attempting to use it returns a 404 error (Field type money not found) — use currency for monetary values instead.help field is the guidance text shown to the user. The description field, on the other hand, is generated automatically by the API and should not be sent with a custom value.select, radio, or checkList receive their choices through the options field, always as an array of plain strings — never as an array of {label, value} objects.sectionMetadata on every field, even when the phase has a single section: it visually groups fields together and keeps the display consistent across the interface.uiComponent and rules fields are not accepted in this payload. uiComponent is automatically derived from type, and conditional rules between fields are configured through the dedicated rules endpoint (PUT .../fields/rules), which should be called as a later step.curl --location --request PUT '/v1/flows//phases//fields' \
--header 'Content-Type: application/json' \
--data '{
"fields": {
"fields": [
{
"name": "Documentation Status",
"type": "select",
"help": "Indicates whether the documents are complete.",
"required": true,
"index": 1,
"editable": true,
"active": true,
"category": "default",
"options": [
"Complete",
"Pending"
],
"sectionMetadata": {
"sectionId": "sec_screening",
"sectionTitle": "Screening",
"sectionIndex": 1
}
},
{
"name": "Notes",
"type": "longText",
"help": "Free text.",
"required": false,
"index": 2,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_screening",
"sectionTitle": "Screening",
"sectionIndex": 1
}
},
{
"name": "Suggested Limit",
"type": "number",
"help": "Value in local currency.",
"required": false,
"index": 3,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_analysis",
"sectionTitle": "Analysis",
"sectionIndex": 2
}
},
{
"name": "Due Date",
"type": "date",
"help": "Deadline.",
"required": false,
"index": 4,
"editable": true,
"active": true,
"category": "default",
"sectionMetadata": {
"sectionId": "sec_analysis",
"sectionTitle": "Analysis",
"sectionIndex": 2
}
}
]
}
}'{
"fields": [
{
"id": "string",
"name": "string",
"type": "string",
"help": "string",
"required": true,
"editable": true,
"active": true,
"category": "string",
"index": 0,
"sectionMetadata": {},
"options": [
"string"
]
}
]
}