GET /analyses/:analysisId devuelve más de 30 campos. Esta página no trata de definiciones de campos, sino del orden en que leerlos y de cómo interpretarlos. Para la lista de campos y sus tipos, consulte la referencia de la API; para la terminología, conceptos clave.
El orden de lectura
Compruebe status
completed. En failed, registre error.code y error.message y revise el estado de los ítems.Compruebe outputFormatting.status
extractedData sigue la estructura del output schema solo cuando systemMetadata.outputFormatting.status es formatted o validation_failed. Con skipped o fallback_raw no hay sobre (vea más abajo).Bifurque según verificationStatus
verified → aprobar automáticamente, pending_review → cola de revisión, rejected → rechazar. Los veredictos de detalle vienen después.Lea extractedData y details[]
value del sobre, el motivo en reasoning, y la causa de un campo vacío es el reasonCode de details[].Vaya a agentAuditLog si lo necesita
El sobre de extractedData
Cada campo final del output schema lleva un objeto con tres claves en lugar de un valor suelto. Los objetos intermedios y las estructuras de array siguen su esquema exactamente.
- Un campo que no obtuvo valor mantiene su sitio, con
value: null. La lista de campos deextractedDatasiempre coincide con el output schema. - Cuando el propio objeto padre no se produjo, las rutas por debajo no se crean. En ese caso,
details[]lleva una entrada para el padre conreasonCode: "PARENT_MISSING". reasoningse guarda en el momento en que el análisis se completa. Volver a leer el análisis nunca lo cambia.sourceStepes un número de orden de ejecución, así que puede cambiar a partir del siguiente análisis si edita el workflow. Para señalar un paso de forma fiable, useagentAuditLog.steps[].work_id.0yfalseson valores válidos. Vacío significanull/""/[]/{}.
Cuando no hay sobre
fallback_raw es la causa más frecuente de “todos los campos del output schema parecen vacíos”. Bifurque según status antes de buscar valores por clave del esquema. validation_failed significa que el ensamblado funcionó pero algunas entradas no validan contra el esquema: el sobre es normal, y las discrepancias están en ajvErrors[].
outputFormatting. Para esos, decida si hay sobre comprobando si outputSchema es null.Por qué un campo está vacío
Un campo que no recibió valor permanece en el sobre convalue: null, y se añade a details[] una entrada con category: "JSON_OUTPUT" que baja outputCompleteness en el Analysis Score.
reasonCodees un enumerado ampliable. Maneje sin error un valor fuera de la tabla. Es un eje distinto detype(un conjunto fijo de seis, comoOUTPUT_MISSINGyOUTPUT_EMPTY).reasonCode,messageystepIdaparecen solo en entradasJSON_OUTPUT, nunca en entradasSTEPniTOOL.messageson los fundamentos que registró el paso responsable, mientras que elreasoningdel sobre da el motivo a nivel de campo. Las dos frases pueden diferir, así que lea primeroreasoningpara el contexto del campo.targetes una ruta de instancia real. Los arrays se despliegan por índice, uno por elemento (ubo_register[0].name). Un array vacío, o una clave de array ausente, cuenta como una sola entradaubo_register.- Omni no vuelve a examinar el documento original. Nunca afirma que “el valor no estaba en el documento”; lo máximo que dice es que “no se incluyó en el resultado de la extracción” (
NOT_IN_FINAL_OUTPUT).
Cuando no se puede suministrar un motivo
reasoning: null no significa “no hubo fundamentos”, sino “no se pudo suministrar un motivo”. Los motivos no se generan de forma retroactiva para análisis anteriores.
No use extractionStatus
extractionStatus es un campo obsoleto que se mantiene por compatibilidad. Trabaja al nivel de las claves de primer nivel del esquema (extracted / missing), así que no distingue campos anidados ni elementos de array. Las integraciones nuevas deben usar el value del sobre junto con details[]. Su regla de vacío coincide con la del sobre (0 y false cuentan como extracted). En un análisis sin output schema, devuelve un mapa indexado por las claves de primer nivel de extractedData.
Leer los veredictos
La respuesta contiene tres niveles de veredictos con nombres parecidos, cada uno con un conjunto de valores distinto.failed lo convierte en rejected, todos passed en verified, y cualquier otra combinación en pending_review. summary.overall_decision es el mismo agregado, de modo que passed → verified, needs_review → pending_review y failed → rejected. findings[].result es ese mismo resultado traducido para la interfaz (needs_review pasa a warning).
confidence frente a confidenceScore
confidenceScore alto puede convivir con un confidence.score bajo. El caso típico es que todos los pasos pasen mientras el output schema vuelve vacío. Incluya confidence.score y details[] junto a verificationStatus en sus condiciones de aprobación automática. Los pesos y los tramos de nivel están en conceptos clave.
Qué playbook produjo este veredicto
Un análisis congela el playbook tal como estaba al ejecutarse y lo devuelve comoplaybookSnapshot. Editar el workflow después deja intactos los fundamentos de los análisis anteriores.
playbookSnapshot de los análisis marcados como frozen. outputSchema se congela del mismo modo.
Leer el registro de auditoría
agentAuditLog es el registro de ejecución paso a paso. A diferencia de los campos de nivel superior, usa snake_case (work_id, executed_at, duration_ms).
- Identificar un paso:
stepes el orden de ejecución ywork_ides el ID fijo de la acción del playbook. Se corresponde conworkflowActions[].workIddeGET /workflows/:workflowId. - Veredictos de paso:
status(passed/needs_review/failed) yreasoningson lo que la pestaña Summary muestra como línea de razonamiento en el panel.rulees la instrucción que llevó a cabo ese paso. - Llamadas a motores externos: juzgue el fallo por
successyerror_codeenmcpcalls[]. No hay código de estado HTTP.fallback_to_rag: truesignifica que, tras fallar el motor, se recurrió a la búsqueda documental. - Para ver esas mismas llamadas organizadas por acción, use
rawActionResults.{acción}.mcpResults[]. Ese lado usa camelCase (durationMs,errorCode,fallbackToRag). - Un paso que nunca se ejecutó tampoco aparece en
systemMetadata.workflowHistory[]. Las definiciones completas de los pasos están enworkflowActionsde la respuesta del workflow, y un paso no ejecutado queda registrado endetails[]comoSTEP_NOT_EXECUTED.
Un patrón para el procesamiento posterior
- Mostrar a un revisor el
target, elreasonCodey elmessagededetails[]junto alreasoningdel sobre hace que encuentre la causa mucho antes. - Volver a analizar el mismo perfil tras mejorar los ítems emite un
analysisIdnuevo. El resultado anterior se conserva, y puede compararlos con el selector de ejecución del panel. - Cuando necesite un informe que pueda leer una persona, obtenga el PDF con
GET /analyses/:analysisId/report.