{"id":"form-answer-diff","version":"1.0.0","description":"Diff two answer maps against one shared form definition.","supported_operations":["diff form answers","compare form submissions"],"unsupported_operations":["definition diff","respondent reconciliation","fuzzy answer matching","numeric coercion"],"semantics":["One definition interprets both answer maps. Unknown answer keys are reported and are not treated as fields.","This is a comparison, not a completeness check. form-response-check is the report that accepts or rejects null.","Precedence, first match wins: invalid; both missing unchanged; missing versus null or a valid value is added or removed; both null unchanged; null versus a valid value is changed with reason null_versus_value; valid multi reorder is order_only; then equal values are unchanged and unequal values are changed.","An invalid value is not also added, removed, changed, or order_only. Both nulls compare equal and still count as null. That equality does not make null a valid answer.","Missing, null, and empty stay distinct. Empty means a valid empty string or a valid empty multi-select. Returned multi arrays keep the submitted order.","number and integer reject numeric strings. -0 is canonicalized to 0. json equality ignores object key order and keeps array order.","Each field is in exactly one of added, removed, changed, invalid, order_only, or the unchanged count."],"limits":{"max_input_bytes":262144,"max_output_bytes":262144,"max_input_depth":16,"max_input_nodes":20000,"max_fields":100,"max_choices":50,"max_respondents":100,"max_id_bytes":128,"max_label_bytes":256,"max_choice_bytes":128,"max_answer_string_bytes":4096,"max_answer_depth":6,"max_answer_nodes":50,"max_changes":500,"max_mapping":100},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["definition","left","right"],"properties":{"definition":{"type":"object","additionalProperties":false,"required":["fields"],"properties":{"fields":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1},"label":{"type":"string"},"type":{"type":"string","enum":["string","number","integer","boolean","choice","multi","json"]},"required":{"type":"boolean"},"choices":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50}}}}}},"left":{"type":"object"},"right":{"type":"object"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["added","removed","changed","invalid","order_only","unknown","counts"],"properties":{"added":{"type":"array"},"removed":{"type":"array"},"changed":{"type":"array"},"invalid":{"type":"array"},"order_only":{"type":"array"},"unknown":{"type":"array"},"counts":{"type":"object"}}},"examples":[{"input":{"definition":{"fields":[{"id":"note","label":"Note","type":"string","required":false},{"id":"tags","label":"Tags","type":"multi","required":false,"choices":["x","y"]},{"id":"qty","label":"Qty","type":"number","required":false}]},"left":{"note":"","tags":["y","x"],"qty":null},"right":{"tags":["x","y"],"qty":1}},"output":{"added":[],"removed":[{"id":"note","presence":"empty","value":""}],"changed":[{"id":"qty","reason":"null_versus_value","left_presence":"null","right_presence":"value","left":null,"right":1}],"invalid":[],"order_only":[{"id":"tags","left":["y","x"],"right":["x","y"]}],"unknown":[],"counts":{"added":0,"removed":1,"changed":1,"invalid":0,"order_only":1,"unknown":0,"unchanged":0,"fields":3,"left_missing":0,"left_null":1,"left_empty":1,"right_missing":1,"right_null":0,"right_empty":0}}}],"execute_url":"/v1/tools/form-answer-diff/versions/1.0.0/execute"}