Answer an open information request
Autosaves the answers to the round in remediation[] of the widget state. Same soft draft validation as the section form (format issues come back in errors[] while the save succeeds); the round is closed by POST /api/v4/kyb/widget//submit, which refuses while any target is still unanswered.
Targets carry their own section_key because a round crosses sections. Only the FIELD targets of the live round are accepted: anything else is a 409 not_requested, a document group included, since a group is answered by uploading through POST /api/v4/upload/kyb//documents.
A requested field brings its required_if siblings with it, so picking “Other” in an asked select lets the specify-field the catalog then makes required be answered in the same body. The widening is one hop off a real ask: a required_if field whose trigger the round did not ask for is still a 409 not_requested.
A custom ask is answered under custom instead, addressed by item_id because it has no catalog keys: {"custom":[{"item_id":"...","text":"..."}]}. Both lists are optional and a body carrying neither is a 400; anything but an open custom ask of the live round that takes text is a 409 not_requested, a file-only ask included. Clearing the text un-answers the ask, which the re-submit then refuses if it is required; an ask the officer marked optional may stay empty. Text of nothing but whitespace IS clearing it, both here and at the gate.
comments carries the merchant’s own note on an item, addressed by item_id the way a custom answer is, because that is the one key every kind has: {"comments":[{"item_id":"...","text":"..."}]}. Any item of the live round takes one, a document group and a file-only custom ask included. It is not an answer: it resolves nothing, leaves items_open where it was and does not open the re-submit gate, so an item carrying only a comment is still outstanding. Empty text erases the note. All three lists are optional and a body carrying none of them is a 400; an item_id outside the live round is a 409 not_requested.
remediation in the response is the round after this write, the same block the widget state carries as info_request: items_open counts the targets still outstanding.