Update a User Data Capture form
/user-data-capture/forms/{formId}Partial update from the old camelCase body: name, pages, fields (a field's uuid updates it in place), fieldsToDelete and pagesToDelete. It answers the old shape.
Deprecated: withdrawn on 2027-06-30. PATCH /data-capture-forms/{id} replaces it; the Link header names it.
Path parameters
The user-data-capture form's public uuid.
Request body
application/json, required · UserDataCaptureFormUpdate
Form-builder field definitions. To edit an existing field, include its
uuid(from the form GET); omituuidonly to create a new field — editing by uuid avoids duplicates from label/reference drift. A field may include aconditionsarray to show it only when another field's answer matches — each condition is{ reference: <the controlling field's reference>, operator (=, !=, >, <, >=, <=, or ?? = has-value), value }; omitvalueonly when operator is??. Conditions are display-only. Sendingconditions: []clears a field's conditions; omitting the key leaves them unchanged. A field may also includeconditionLogic(ANDorOR, defaultAND) saying how its conditions combine. Theone_ofandnot_one_ofoperators take a non-empty list of values instead of a single one. On a single-answer controlling field they match when the answer is (or is not) one of the listed values; on a multi-select controlling field they match when the answer includes at least one of them (or none of them).Form-builder page definitions to upsert.
Fields to remove, each a field uuid or its
reference.Page uuids to remove.
{
"name": "UK Investor Profile (KYC/AML)",
"fields": [
{
"uuid": "3c2b1a09-8f7e-4d6c-5b4a-3928176c5d4e",
"type": "TEXT",
"label": "Full legal name",
"reference": "full_legal_name",
"validator": "required|string",
"order": 1
},
{
"type": "TEXT",
"label": "National Insurance number",
"reference": "national_insurance_number",
"validator": "nullable|string",
"order": 2
}
]
}Responses
{
"data": {
"id": "6f1c2e8a-1b2c-4d5e-8f90-1a2b3c4d5e6f",
"name": "KYC profile (updated)",
"status": "Enabled",
"field_count": 2,
"fields": [
{
"reference": "tax_residency",
"label": "Tax residency",
"name": "tax_residency",
"type": "TEXT",
"allowed_values": null,
"required": true
},
{
"reference": "investor_category",
"label": "Investor category",
"name": "investor_category",
"type": "DROPDOWN",
"allowed_values": [
"retail",
"professional"
],
"required": false
}
],
"created_at": "2026-06-15T10:30:00+00:00",
"updated_at": "2026-06-21T08:47:30+00:00"
}
}Authorization failed. error.code is one of org_disabled,
ip_blocked, missing_scope, scope_disabled, user_disabled.
Request validation failed (HTTP 422). The body is either the Laravel
validation envelope (message + field-keyed errors) or the API error
envelope for domain rejections (e.g. form_type_not_supported,
folder_locked, parent_not_found, folder_not_empty).
Examples
curl -X PATCH https://your-org-domain/kong/core/api/v2/user-data-capture/forms/{formId}\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"\
-d '{
"name": "UK Investor Profile (KYC/AML)",
"fields": [
{
"uuid": "3c2b1a09-8f7e-4d6c-5b4a-3928176c5d4e",
"type": "TEXT",
"label": "Full legal name",
"reference": "full_legal_name",
"validator": "required|string",
"order": 1
},
{
"type": "TEXT",
"label": "National Insurance number",
"reference": "national_insurance_number",
"validator": "nullable|string",
"order": 2
}
]
}'