Form created via public API shows "Form Incomplete" in Fieldwire app — what am I missing?
Hi Fieldwire team,
I'm using the public REST API to create new forms programmatically and running into a consistent issue where the forms are rejected by the Fieldwire web/mobile apps with:
"This form is unavailable for editing, because its content has not fully synchronized. Please ensure that this device and any devices that edited this form are online and fully synchronized."
I've reproduced this end-to-end using your own documentation's Try It! panel (not just my bridge integration), so it's not a client-side problem.
Reproduction
POST https://client-api.us.fieldwire.com/api/v3/projects/{project_id}/forms → 201 Created Body includes all required fields: id, creator_user_id, last_editor_user_id, owner_user_id, name, form_template_id, form_template_form_status_id, checksum (UUIDv4), plus Fieldwire-Version: 2024-01-01.
POST /api/v3/projects/{project_id}/forms/{id}/generate with {"source_form_id": ""} → 202 Accepted. Sections / records / inputs are generated server-side.
GET /api/v3/projects/{project_id}/forms/{id}/validate_checksum → {"is_valid":false}.
Opening the form in the Fieldwire web or mobile app shows the "Form Incomplete" dialog above.
Tested IDs on our account (project c6577cc0-c38d-4648-b5b9-5e4a57f776e1): recent forms named zzDocsCreate, zzOpenMeInFieldwire, zzTest_Generate_From_Source.
What I've ruled out
Missing required field: not it — POST /forms rejects missing required fields with 422 "… can't be blank". Every required field is populated.
/generate not called: it returns 202 and the DB shows the form's sections/records/inputs are materialised.
Stale status: using the template's initial status (ordinal 1, is_editable true).
Bridge issue: reproducing via your docs Try It! panel produces the same is_valid:false.
Patching checksum after the fact: PATCH /forms/{id} with any checksum value returns 201 but silently drops the field — the stored checksum keeps whatever was sent on the original POST.
What I suspect
The checksum our client supplies (a UUIDv4) isn't whatever SHA-256 your own apps compute from the form's canonical content. Your apps run GET /validate_checksum at open time, get false, and refuse to open the form. From the public API alone there's no way to produce a valid checksum.
Questions
What does checksum on POST /forms hash? (Which fields, which order, which encoding, which hash function?)
After POST /generate creates the sections/records/inputs, is there a server-side endpoint to have Fieldwire recompute and store the correct checksum?
Is API-only form creation supported, or does every new form need a Fieldwire client device to do the final checksum sync? If the latter, is there a documented workflow for headless/API-driven form creation?
Any guidance much appreciated — happy to share more request/response logs or test account details if it helps.
Best,
Robertas Suminskas