Estructura del resultado
El resultado responde a tres preguntas: qué valores se calcularon, qué problemas se encontraron y qué sustitución o cambio puede proponerse para cada aparición.
Una métrica activa siempre se evalúa, pero su salida depende del tipo: las mediciones aparecen una vez; las reglas de sugerencia solo aparecen cuando encuentran coincidencias.
result.measurements[]Mediciones
Valores numéricos calculados. Cada entrada de result.measurements se identifica por metric_id; value se interpreta junto con unit e implementation_version.
Métricas y reglas →result.suggestions[]Reglas de sugerencia
Problemas agrupados por regla. Cada elemento explica el problema y reúne en occurrences todas sus apariciones concretas en el texto.
Métricas y reglas →Estructura de una sugerencia y sus cambios
Una suggestion describe el tipo de problema; cada occurrence indica dónde aparece y si arText dispone de una sustitución o edición concreta.
suggestions[].metric_idIdentificador estable de la regla. Su definición se consulta en GET /v1/metrics.suggestions[].summaryExplicación del problema encontrado en este informe.suggestions[].recommendations[]Orientación general para revisar el problema; no equivale necesariamente a una sustitución literal.occurrences[].textFragmento detectado por la métrica.occurrences[].start / endRango sobre el texto original medido en puntos de código Unicode; start es inclusivo y end exclusivo.occurrences[].replacementSustitución textual preferida cuando existe. null significa que la regla no ofrece una sustitución directa.occurrences[].alternatives[]Otras sustituciones revisadas, sin repetir replacement. Puede ser un array vacío.occurrences[].edits[]Cambios seguros normalizados como {start, end, text}. text vacío elimina el rango y start igual a end inserta texto.Una ocurrencia sigue siendo un problema válido aunque replacement sea null y edits esté vacío. En ese caso debe mostrarse la explicación y dejar la revisión a la persona usuaria; la integración no debe fabricar un cambio.
200 · Completado
{
"error": null,
"external_id": "document-123",
"position_in_queue": null,
"report_id": "rep_7f12a4c8",
"result": {
"genre": {
"id": "informe",
"title": "Informe"
},
"language": "es",
"measurements": [
{
"implementation_version": "1.0",
"metric_id": "word-count",
"unit": "words",
"value": 12
}
],
"offset_unit": "unicode_code_points",
"schema_version": "1.0",
"suggestions": [
{
"category": "lexical",
"explanation": null,
"id": "sug_1",
"implementation_version": "1.0",
"metric_id": "redundant-expressions",
"metric_title": "Eliminaci\u00f3n de expresiones redundantes",
"occurrences": [
{
"alternatives": [],
"edits": [
{
"end": 16,
"start": 0,
"text": ""
}
],
"end": 16,
"id": "occ_1",
"paragraph_index": 0,
"replacement": null,
"sentence_index": 0,
"start": 0,
"text": "En el d\u00eda de hoy"
}
],
"recommendations": [
"Elimina la expresi\u00f3n si el contexto lo permite."
],
"severity": "warning",
"summary": "Conviene formular el fragmento de manera m\u00e1s directa."
}
]
},
"status": "completed"
}