Get the widget state
Returns the full widget state for a case: the server-authoritative section catalog merged with stored draft values, owners, documents and any open remediation notes. Authenticated solely by the public_id in the path. Documents render as slots (documents[] on a section): each slot lists its accepted types (options), required flag and uploaded files; person government IDs appear on the representative section slot and inside each owner entry. The parties section carries the per-owner form template in fields (values live in owners). Documents are uploaded via POST /api/v4/upload/kyb//documents (multipart, served by docver-upload).
sections and remediation are TWO FORMS; branch on status. While an information request is open (the case is in_remediation) remediation[] carries the round in catalog order, every entry writable and holding the whole catalog definition of its target (field or documents, per target_kind) plus the officer’s message and the target’s previous_value; the whole of sections is editable: false for the duration. Outside a round remediation is absent and sections is the form as before.
A round may also carry asks the catalog does not define (target_kind: custom), listed after the catalog ones. Such an entry has no section_key / field_key and no previous_value; it carries a custom object with the officer’s own label, instruction and expectation, the resp_type that says which controls to render (text, file, text+file), required, and the answer_text entered so far. Answer the text through POST /api/v4/kyb/widget//remediation under custom, addressing the ask by the entry’s item_id; files are uploaded against that same identifier. item_id is present on every entry, custom or not.
The custom object carries two file lists, both by identity only (they are in no document slot): documents are the answers uploaded so far, each removable through the widget’s document delete, and reference_documents are read-only examples the officer attached to the ask. Read an example through GET /api/v4/upload/kyb//remediation/reference/; an example never counts as an answer.
The form also carries what remediation did to it. A field a round has changed carries original_value (what was entered in the widget before any round touched it) and remediation (the round the current value came back from, plus changes_count); both are absent on a field no round ever asked about, where value IS the original. A document replaced by a later upload keeps its slot with superseded_at set and superseded_by_document_id naming its replacement, listed after the live files and never editable. So multiple no longer bounds documents[]: it counts the LIVE files a slot takes, and a single-file slot (multiple: false) can list several documents. Read the live files by filtering superseded_at == null — one for a single-file slot, none once its last file was deleted — and treat the rest as the record of what came before. Do not read documents[0]: live-before-superseded is the order the response happens to be built in, not part of this contract.
Path Parameters
KYB case public id.