Contrato backend
El transporte JSON por defecto envía valores de modelo keyed por mappedTo resuelto:
{ "inputs": { "feature_key": "Example text" }}La respuesta recomendada es:
{ "reports": { "report_key": { "label": "Approved", "confidence": 0.91 } }, "meta": { "model": "demo" }}Usa request.displayValues para review/export keyed por displayKey; campos sin displayKey se omiten. Usa request.serializedValues o request.modelValues para backend/modelo keyed por mappedTo. El field id sigue siendo handle runtime para estado UI.
Usa createSubmissionSnapshot(form, options) cuando una app necesita los mismos records para review, persistencia o export antes del submit.
Usa createMultiBackendSubmissionSnapshot(form, { backends }) cuando un form visible alimenta varios modelos con claves mappedTo distintas. Usa executeMultiBackendPipeline({ form, backends }) cuando una acción de usuario debe enviar cada backend y conservar resultados, report fetch outputs, errores, reports omitidos y contextos por backend. createFanoutTransport sigue siendo fanout de transporte; no resuelve mappings de schema por backend.
Usa createJsonTransport({ body }) si tu backend necesita otra forma de request y createJsonTransport({ parse }) si no responde JSON estándar.
const transport = createJsonTransport({ endpoint: "/api/predict", body: (request) => JSON.stringify({ inputs: request.modelValues }), parse: async (response) => response.json(),});El fallback de salidas legacy existe solo por compatibilidad. La documentación nueva debe usar reports.