DoConure

Missing and extra fields

Two rules that make integration forgiving, and one consequence you should know about.

A field the template wants but your payload omits renders empty. It is not an error. A field your payload carries but the template never reads is simply ignored. An under-sized or over-sized payload still produces a document.

So {{ vendor.price }} with no price in the data leaves a blank where the number would be, and the request still answers 200.

The consequence: a misspelled field is not an error. Send vendro instead of vendor and you get a document with a gap, not a refusal — but not in silence: the answer carries the warning TEMPLATE_FIELDS_MISSING (2104), naming what the template wanted and did not get.

The payload of each request is also kept as received (for 12 months, and never for a dataless call). Open Documents in the console, click Details on the generation, and the page lists wanted by the template but absent and sent but never read side by side — a typo shows up in the second list immediately.

Case does not matter

Tag and payload casing need not agree. All of these are the same field:

template:  {{ VendoR.Price }}    {{ vendor.price }}    {{ VENDOR.PRICE }}
payload:   {"Vendor": {"PRICE": …}}   {"vendor": {"price": …}}

Both sides are folded to lowercase before merging, loop names included: {% for R in Forniture %} reads the array forniture and {{ r.SITE }} reads site on each item. Values are never touched — a company name keeps its capitals.

The one thing to avoid is a payload that carries the same field in two casings (Vendor and vendor together): that is ambiguous, and the populated one wins rather than whichever came first.