Circle V2 API Docs
    Preparing search index...
    getFields: QueryProcedure<
        {
            input: { formId: string };
            meta: object;
            output: {
                conditionalRules: {
                    description: string;
                    id: string;
                    kind: "unknown" | "reveals" | "requires" | "one-of";
                    sourceAnnotationId: string;
                    targetAnnotationId: string;
                }[];
                fields: FormTemplateField[];
                formId: FormId;
                requiredContactTypes: FormTemplateRequiredContactType[];
            };
        },
    > = ...

    A saved template's fields, so the editor can reopen one it set up earlier. The annotations and coordinates ids are the payload's point: update takes the COMPLETE field set and reconciles by id, so a field read back without one is re-inserted on the next save, which reissues every coordinates.id (the key sub-field answers are filed under) and drops the contact wiring.