# Leer un documento por páginas

> Lee la versión sincronizada y permite citar sus páginas.



{/* AUTO-GENERATED by @emisso/codegen. DO NOT EDIT. */}

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `pjud.documentos.detallar`                                         |
| **Nombre MCP**      | `pjud__documentos__detallar`                                       |
| **Conector**        | `pjud`                                                             |
| **Plano**           | `action`                                                           |
| **Lee el alcance**  | `expedientes` (debe estar habilitado en la conexión)               |
| **Scope (permiso)** | `pjud:read`                                                        |
| **Auth**            | `none`                                                             |
| **Versión**         | `1`                                                                |
| **Sensible**        | sí                                                                 |
| **Deprecado**       | no                                                                 |
| **Comportamiento**  | readOnly=true, destructive=false, idempotent=true, openWorld=false |

> **Requiere conexión.** Indica cuál en cada llamada: header `X-Connect-Connection` en REST, campo `connectionId` en el `execute` de MCP y en las opciones del SDK. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale de [`conexiones.estado.consultar`](../conexiones/estado-consultar).

## Qué hace [#qué-hace]

Si requiere OCR o la extracción falló, no inventa contenido. Indica truncación y páginas restantes. El enlace temporal al original solo se solicita explícitamente; una consulta nunca inicia una descarga desde OJV. Lee exclusivamente datos ya sincronizados de la conexión. Para actualizarlos usa pjud.conexion.sincronizar. Revisa estadoDatos, observadoHasta y cobertura antes de interpretar una lista vacía.

## Entrada [#entrada]

| Campo                   | Tipo                                | Requerido            | Descripción                                                                                                                                                                                                |
| ----------------------- | ----------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `documentoId`           | string `^pjd_[a-zA-Z0-9_-]{16,80}$` | sí                   | ID obtenido de pjud.documentos.consultar; nunca un enlace ni un token de OJV.                                                                                                                              |
| `paginaDesde`           | entero                              | no · default `1`     | Primera página del documento que quieres leer; comienza en 1.                                                                                                                                              |
| `paginaHasta`           | entero                              | no                   | Última página solicitada, inclusive. La lectura sigue sujeta al máximo de caracteres.                                                                                                                      |
| `offsetPagina`          | entero 0-10000000                   | no · default `0`     | Para continuar una página truncada: siguienteOffset de la respuesta anterior, usando siguientePagina como paginaDesde. Un offset mayor a cero requiere versionSha256 y versionExtraccion de esa respuesta. |
| `versionSha256`         | string `^[a-f0-9]{64}$`             | no                   | Hash de la versión que se desea seguir leyendo. Evita combinar páginas de versiones diferentes.                                                                                                            |
| `versionExtraccion`     | entero                              | no                   | Versión del texto devuelta por la lectura anterior. Reenvíala junto al hash al continuar; un OCR posterior puede cambiar el texto del mismo PDF.                                                           |
| `maxCaracteres`         | entero 1000-60000                   | no · default `12000` | Máximo de caracteres devueltos; revisa textoTruncado y el punto de continuación.                                                                                                                           |
| `incluirEnlaceOriginal` | booleano                            | no · default `false` | Solicita un enlace temporal al PDF ya guardado, sujeto al permiso de esta conexión.                                                                                                                        |

<details>
  <summary>
    JSON Schema de entrada
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "documentoId": {
        "type": "string",
        "pattern": "^pjd_[a-zA-Z0-9_-]{16,80}$",
        "description": "ID obtenido de pjud.documentos.consultar; nunca un enlace ni un token de OJV."
      },
      "paginaDesde": {
        "default": 1,
        "description": "Primera página del documento que quieres leer; comienza en 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991
      },
      "paginaHasta": {
        "description": "Última página solicitada, inclusive. La lectura sigue sujeta al máximo de caracteres.",
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991
      },
      "offsetPagina": {
        "default": 0,
        "description": "Para continuar una página truncada: siguienteOffset de la respuesta anterior, usando siguientePagina como paginaDesde. Un offset mayor a cero requiere versionSha256 y versionExtraccion de esa respuesta.",
        "type": "integer",
        "minimum": 0,
        "maximum": 10000000
      },
      "versionSha256": {
        "description": "Hash de la versión que se desea seguir leyendo. Evita combinar páginas de versiones diferentes.",
        "type": "string",
        "pattern": "^[a-f0-9]{64}$"
      },
      "versionExtraccion": {
        "description": "Versión del texto devuelta por la lectura anterior. Reenvíala junto al hash al continuar; un OCR posterior puede cambiar el texto del mismo PDF.",
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "maxCaracteres": {
        "default": 12000,
        "description": "Máximo de caracteres devueltos; revisa textoTruncado y el punto de continuación.",
        "type": "integer",
        "minimum": 1000,
        "maximum": 60000
      },
      "incluirEnlaceOriginal": {
        "default": false,
        "description": "Solicita un enlace temporal al PDF ya guardado, sujeto al permiso de esta conexión.",
        "type": "boolean"
      }
    },
    "required": [
      "documentoId"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Salida [#salida]

| Campo                                  | Tipo                                                                                                                             | Requerido         | Descripción                                                                                                                                        |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | --------------------- | ------------------ | ------- | ------- | ---------- | -------------- | ------- | --- | ----------------- | --- | ------------------------ | -------------------------------------------- | ----------------- | ----------------------- | ---- | ----------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `documento`                            | objeto                                                                                                                           | null              | sí                                                                                                                                                 | Metadatos de la versión del documento que se está leyendo; null si no está disponible.                                                       |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.documentoId`                | string `^pjd_[a-zA-Z0-9_-]{16,80}$`                                                                                              | sí                | ID obtenido de pjud.documentos.consultar; nunca un enlace ni un token de OJV.                                                                      |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.causaId`                    | string `^pjc_[a-zA-Z0-9_-]{16,80}$`                                                                                              | sí                | ID obtenido de pjud.causas.consultar. No es el rol escrito en el portal.                                                                           |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.cuadernoId`                 | string `^pjq_[a-zA-Z0-9_-]{16,80}$`                                                                                              | null              | sí                                                                                                                                                 | Cuaderno al que corresponde la información; null para una sección de toda la causa.                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.actuacionId`                | string `^pja_[a-zA-Z0-9_-]{16,80}$`                                                                                              | null              | sí                                                                                                                                                 | Actuación asociada; null para información de toda la causa.                                                                                  |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.descripcion`                | string                                                                                                                           | sí                | Descripción de la pieza o cambio observado.                                                                                                        |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.tipoFuente`                 | string                                                                                                                           | null              | sí                                                                                                                                                 | Tipo de pieza o trámite informado por la fuente.                                                                                             |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.folioFuente`                | string                                                                                                                           | no                | Folio del documento en su listado de origen, distinto del folio de la actuación.                                                                   |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.anexoObservado`             | objeto                                                                                                                           | no                | Solo para anexos civiles sin folio publicado. Los bytes diferentes se conservan separados y la cobertura del listado permanece parcial.            |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.anexoObservado.identidad`   | string                                                                                                                           | sí                | Identifica este archivo por sus bytes y su causa o actuación. No identifica un documento judicial ni relaciona archivos diferentes como versiones. |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.anexoObservado.sha256`      | string `^[a-f0-9]{64}$`                                                                                                          | sí                | Huella inmutable del archivo observado, incluso si después se restringe su acceso.                                                                 |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.anexoObservado.referencias` | lista de objeto                                                                                                                  | sí                | Referencias del listado que apuntaban a estos mismos bytes en el mismo ámbito. Se conservan repeticiones; no implican identidad judicial.          |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.clase`                      | `"principal"` · `"certificado_envio"` · `"anexo"` · `"ebook"` · `"sin_clasificar"`                                               | sí                | Clase documental identificada desde la referencia de OJV.                                                                                          |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fechaFuente`                | string `^\d{4}-\d{2}-\d{2}$`                                                                                                     | null              | sí                                                                                                                                                 | Día de fuente asociado a la pieza o al cambio en AAAA-MM-DD; null si no está disponible.                                                     |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.descarga`                   | `"referenciado"` · `"descargado"` · `"fallido"` · `"no_accesible"`                                                               | sí                | Descargado confirma bytes originales guardados; referenciado solo confirma un enlace observado.                                                    |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.extraccion`                 | `"pendiente"` · `"extraido"` · `"parcial"` · `"requiere_ocr"` · `"fallido"` · `"no_disponible"`                                  | sí                | Disponibilidad del texto. Parcial o requiere\_ocr no significa que falten los bytes originales.                                                    |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.paginas`                    | entero                                                                                                                           | null              | sí                                                                                                                                                 | Páginas detectadas en el archivo; null si no se pudo determinar.                                                                             |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.sha256`                     | string `^[a-f0-9]{64}$`                                                                                                          | null              | sí                                                                                                                                                 | Hash de los bytes de la versión descargada. null si todavía no se recuperó el archivo.                                                       |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fuente`                     | objeto                                                                                                                           | sí                | Procedencia y fecha de observación. No contiene credenciales ni enlaces privados.                                                                  |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fuente.sistema`             | string                                                                                                                           | sí                | Sistema judicial del que procede la observación.                                                                                                   |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fuente.ruta`                | `"mis_causas"` · `"consulta_unificada"` · `"ingreso_ojv"`                                                                        | sí                | Superficie OJV utilizada para recuperar la información.                                                                                            |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fuente.portalUrl`           | `"https://oficinajudicialvirtual.pjud.cl/indexN.php"` · `"https://ojv.pjud.cl/kpitec-ojv-web/views/login.html"`                  | sí                | Acceso al portal; puede requerir sesión. No contiene enlaces privados ni tokens de OJV.                                                            |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `documento.fuente.observadoEn`         | string \`^(?:(?:\d\d\[2468]\[048]                                                                                                | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                         | \[02468]\[048]00                                                                                                                             | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))T(?:(?:\[01]\d | 2\[0-3]):\[0-5]\d(?::\[0-5]\d(?:.\d+)?)?(?:Z | (\[+-]\(?:\[01]\d | 2\[0-3]):\[0-5]\d)))$\` | sí   | Instante ISO 8601 con zona horaria. |                                                                                                       |
| `paginas`                              | lista de objeto                                                                                                                  | sí                | Páginas o fragmentos de página recuperados de la versión indicada.                                                                                 |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `paginas[].numero`                     | entero                                                                                                                           | sí                | Número de página dentro del PDF original; comienza en 1.                                                                                           |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `paginas[].texto`                      | string                                                                                                                           | sí                | Texto extraído de la página; puede estar vacío cuando no hay texto recuperable.                                                                    |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `paginas[].metodo`                     | `"texto_pdf"` · `"ocr"` · `"sin_texto"`                                                                                          | sí                | Cómo se obtuvo el texto. Sin\_texto no acredita que la página carezca de contenido visual.                                                         |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `textoTruncado`                        | booleano                                                                                                                         | sí                | Indica si queda texto fuera de esta respuesta por el límite solicitado.                                                                            |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `siguientePagina`                      | entero                                                                                                                           | null              | sí                                                                                                                                                 | Página desde la cual continuar; null si se agotó la lectura solicitada.                                                                      |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `siguienteOffset`                      | entero                                                                                                                           | null              | sí                                                                                                                                                 | Posición dentro de la página cuando el corte ocurrió a mitad de texto.                                                                       |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `versionExtraccion`                    | entero                                                                                                                           | null              | sí                                                                                                                                                 | Versión inmutable del texto leído; puede cambiar con una extracción posterior del mismo PDF.                                                 |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `incidenciaExtraccion`                 | `"pjud_pdf_invalido"` · `"pjud_pdf_protegido"` · `"pjud_pdf_limite"` · `"pjud_pdf_timeout"` · `"pjud_pdf_procesamiento_fallido"` | null              | sí                                                                                                                                                 | Fallo saneado del intento de extracción elegido. No implica que falten los bytes originales ni permite inferir cuántas páginas tiene el PDF. |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `enlaceOriginal`                       | objeto                                                                                                                           | null              | sí                                                                                                                                                 | Acceso temporal al original, o null si no se solicitó o no está disponible.                                                                  |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `enlaceOriginal.url`                   | string `^https:\/\/`                                                                                                             | sí                | Enlace temporal autorizado al original guardado, nunca al token privado de OJV.                                                                    |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `enlaceOriginal.expiraEn`              | string \`^(?:(?:\d\d\[2468]\[048]                                                                                                | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                         | \[02468]\[048]00                                                                                                                             | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))T(?:(?:\[01]\d | 2\[0-3]):\[0-5]\d(?::\[0-5]\d(?:.\d+)?)?(?:Z | (\[+-]\(?:\[01]\d | 2\[0-3]):\[0-5]\d)))$\` | sí   | Instante ISO 8601 con zona horaria. |                                                                                                       |
| `estadoDatos`                          | `"sin_sincronizar"` · `"disponibles"` · `"incompletos"`                                                                          | sí                | Una lista vacía con sin\_sincronizar o incompletos no acredita ausencia de actividad judicial.                                                     |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `observadoHasta`                       | string \`^(?:(?:\d\d\[2468]\[048]                                                                                                | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                         | \[02468]\[048]00                                                                                                                             | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))T(?:(?:\[01]\d | 2\[0-3]):\[0-5]\d(?::\[0-5]\d(?:.\d+)?)?(?:Z | (\[+-]\(?:\[01]\d | 2\[0-3]):\[0-5]\d)))$\` | null | sí                                  | Corte de observación de los datos persistidos. No es la fecha de la consulta ni la de una resolución. |
| `cobertura`                            | lista de objeto                                                                                                                  | sí                | Secciones efectivamente revisadas y sus límites, para las causas de esta consulta.                                                                 |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].causaId`                  | string `^pjc_[a-zA-Z0-9_-]{16,80}$`                                                                                              | sí                | ID obtenido de pjud.causas.consultar. No es el rol escrito en el portal.                                                                           |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].cuadernoId`               | string `^pjq_[a-zA-Z0-9_-]{16,80}$`                                                                                              | null              | sí                                                                                                                                                 | Cuaderno al que corresponde la información; null para una sección de toda la causa.                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].seccion`                  | `"cabecera"` · `"historia"` · `"litigantes"` · `"notificaciones"` · `"escritos_por_resolver"` · `"exhortos"` · …                 | sí                | Sección concreta cuya cobertura se informa.                                                                                                        |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].estado`                   | `"con_datos"` · `"sin_registros"` · `"parcial"` · `"fallida"` · `"no_accesible"` · `"no_implementada"`                           | sí                | Solo con\_datos y sin\_registros acreditan revisión completa de esta sección. Los otros valores indican información pendiente o inaccesible.       |                                                                                                                                              |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].revisadaEn`               | string \`^(?:(?:\d\d\[2468]\[048]                                                                                                | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                         | \[02468]\[048]00                                                                                                                             | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))T(?:(?:\[01]\d | 2\[0-3]):\[0-5]\d(?::\[0-5]\d(?:.\d+)?)?(?:Z | (\[+-]\(?:\[01]\d | 2\[0-3]):\[0-5]\d)))$\` | null | sí                                  | Instante ISO 8601 de revisión; null si esa sección no se revisó.                                      |
| `cobertura[].registrosObservados`      | entero                                                                                                                           | null              | sí                                                                                                                                                 | Filas observadas en la sección; null significa que no se pudo contar, no cero.                                                               |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |
| `cobertura[].codigoIncidencia`         | string `^pjud_[a-z_]+$`                                                                                                          | null              | sí                                                                                                                                                 | Código saneado; nunca mensajes, cookies o HTML del proveedor.                                                                                |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                              |                   |                         |      |                                     |                                                                                                       |

<details>
  <summary>
    JSON Schema de salida
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "documento": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "documentoId": {
                "type": "string",
                "pattern": "^pjd_[a-zA-Z0-9_-]{16,80}$",
                "description": "ID obtenido de pjud.documentos.consultar; nunca un enlace ni un token de OJV."
              },
              "causaId": {
                "type": "string",
                "pattern": "^pjc_[a-zA-Z0-9_-]{16,80}$",
                "description": "ID obtenido de pjud.causas.consultar. No es el rol escrito en el portal."
              },
              "cuadernoId": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^pjq_[a-zA-Z0-9_-]{16,80}$",
                    "description": "Identificador estable de cuaderno, obtenido de causas.detallar."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Cuaderno al que corresponde la información; null para una sección de toda la causa."
              },
              "actuacionId": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^pja_[a-zA-Z0-9_-]{16,80}$",
                    "description": "Identificador estable de actuación dentro de su causa y ámbito de historia."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Actuación asociada; null para información de toda la causa."
              },
              "descripcion": {
                "type": "string",
                "description": "Descripción de la pieza o cambio observado."
              },
              "tipoFuente": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Tipo de pieza o trámite informado por la fuente."
              },
              "folioFuente": {
                "description": "Folio del documento en su listado de origen, distinto del folio de la actuación.",
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "anexoObservado": {
                "description": "Solo para anexos civiles sin folio publicado. Los bytes diferentes se conservan separados y la cobertura del listado permanece parcial.",
                "type": "object",
                "properties": {
                  "identidad": {
                    "type": "string",
                    "const": "contenido_en_ambito",
                    "description": "Identifica este archivo por sus bytes y su causa o actuación. No identifica un documento judicial ni relaciona archivos diferentes como versiones."
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$",
                    "description": "Huella inmutable del archivo observado, incluso si después se restringe su acceso."
                  },
                  "referencias": {
                    "minItems": 1,
                    "maxItems": 5000,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fecha": {
                          "anyOf": [
                            {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                              "x-emisso-formato": "AAAA-MM-DD"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Fecha publicada junto a la referencia del anexo; null cuando no se informa."
                        },
                        "descripcion": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 4000,
                          "description": "Referencia literal publicada por OJV para el archivo observado; no es un folio ni establece identidad judicial."
                        }
                      },
                      "required": [
                        "fecha",
                        "descripcion"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Referencias del listado que apuntaban a estos mismos bytes en el mismo ámbito. Se conservan repeticiones; no implican identidad judicial."
                  }
                },
                "required": [
                  "identidad",
                  "sha256",
                  "referencias"
                ],
                "additionalProperties": false
              },
              "clase": {
                "type": "string",
                "enum": [
                  "principal",
                  "certificado_envio",
                  "anexo",
                  "ebook",
                  "sin_clasificar"
                ],
                "description": "Clase documental identificada desde la referencia de OJV."
              },
              "fechaFuente": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "x-emisso-formato": "AAAA-MM-DD"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Día de fuente asociado a la pieza o al cambio en AAAA-MM-DD; null si no está disponible."
              },
              "descarga": {
                "type": "string",
                "enum": [
                  "referenciado",
                  "descargado",
                  "fallido",
                  "no_accesible"
                ],
                "description": "Descargado confirma bytes originales guardados; referenciado solo confirma un enlace observado."
              },
              "extraccion": {
                "type": "string",
                "enum": [
                  "pendiente",
                  "extraido",
                  "parcial",
                  "requiere_ocr",
                  "fallido",
                  "no_disponible"
                ],
                "description": "Disponibilidad del texto. Parcial o requiere_ocr no significa que falten los bytes originales."
              },
              "paginas": {
                "anyOf": [
                  {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Páginas detectadas en el archivo; null si no se pudo determinar."
              },
              "sha256": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Hash de los bytes de la versión descargada. null si todavía no se recuperó el archivo."
              },
              "fuente": {
                "type": "object",
                "properties": {
                  "sistema": {
                    "type": "string",
                    "const": "OJV",
                    "description": "Sistema judicial del que procede la observación."
                  },
                  "ruta": {
                    "type": "string",
                    "enum": [
                      "mis_causas",
                      "consulta_unificada",
                      "ingreso_ojv"
                    ],
                    "description": "Superficie OJV utilizada para recuperar la información."
                  },
                  "portalUrl": {
                    "type": "string",
                    "enum": [
                      "https://oficinajudicialvirtual.pjud.cl/indexN.php",
                      "https://ojv.pjud.cl/kpitec-ojv-web/views/login.html"
                    ],
                    "description": "Acceso al portal; puede requerir sesión. No contiene enlaces privados ni tokens de OJV."
                  },
                  "observadoEn": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "description": "Instante ISO 8601 con zona horaria."
                  }
                },
                "required": [
                  "sistema",
                  "ruta",
                  "portalUrl",
                  "observadoEn"
                ],
                "additionalProperties": false,
                "description": "Procedencia y fecha de observación. No contiene credenciales ni enlaces privados."
              }
            },
            "required": [
              "documentoId",
              "causaId",
              "cuadernoId",
              "actuacionId",
              "descripcion",
              "tipoFuente",
              "clase",
              "fechaFuente",
              "descarga",
              "extraccion",
              "paginas",
              "sha256",
              "fuente"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ],
        "description": "Metadatos de la versión del documento que se está leyendo; null si no está disponible."
      },
      "paginas": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "numero": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Número de página dentro del PDF original; comienza en 1."
            },
            "texto": {
              "type": "string",
              "description": "Texto extraído de la página; puede estar vacío cuando no hay texto recuperable."
            },
            "metodo": {
              "type": "string",
              "enum": [
                "texto_pdf",
                "ocr",
                "sin_texto"
              ],
              "description": "Cómo se obtuvo el texto. Sin_texto no acredita que la página carezca de contenido visual."
            }
          },
          "required": [
            "numero",
            "texto",
            "metodo"
          ],
          "additionalProperties": false
        },
        "description": "Páginas o fragmentos de página recuperados de la versión indicada."
      },
      "textoTruncado": {
        "type": "boolean",
        "description": "Indica si queda texto fuera de esta respuesta por el límite solicitado."
      },
      "siguientePagina": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "null"
          }
        ],
        "description": "Página desde la cual continuar; null si se agotó la lectura solicitada."
      },
      "siguienteOffset": {
        "anyOf": [
          {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "null"
          }
        ],
        "description": "Posición dentro de la página cuando el corte ocurrió a mitad de texto."
      },
      "versionExtraccion": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "null"
          }
        ],
        "description": "Versión inmutable del texto leído; puede cambiar con una extracción posterior del mismo PDF."
      },
      "incidenciaExtraccion": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "pjud_pdf_invalido",
              "pjud_pdf_protegido",
              "pjud_pdf_limite",
              "pjud_pdf_timeout",
              "pjud_pdf_procesamiento_fallido"
            ]
          },
          {
            "type": "null"
          }
        ],
        "description": "Fallo saneado del intento de extracción elegido. No implica que falten los bytes originales ni permite inferir cuántas páginas tiene el PDF."
      },
      "enlaceOriginal": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "pattern": "^https:\\/\\/",
                "description": "Enlace temporal autorizado al original guardado, nunca al token privado de OJV."
              },
              "expiraEn": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "description": "Instante ISO 8601 con zona horaria."
              }
            },
            "required": [
              "url",
              "expiraEn"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ],
        "description": "Acceso temporal al original, o null si no se solicitó o no está disponible."
      },
      "estadoDatos": {
        "type": "string",
        "enum": [
          "sin_sincronizar",
          "disponibles",
          "incompletos"
        ],
        "description": "Una lista vacía con sin_sincronizar o incompletos no acredita ausencia de actividad judicial."
      },
      "observadoHasta": {
        "anyOf": [
          {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Instante ISO 8601 con zona horaria."
          },
          {
            "type": "null"
          }
        ],
        "description": "Corte de observación de los datos persistidos. No es la fecha de la consulta ni la de una resolución."
      },
      "cobertura": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "causaId": {
              "type": "string",
              "pattern": "^pjc_[a-zA-Z0-9_-]{16,80}$",
              "description": "ID obtenido de pjud.causas.consultar. No es el rol escrito en el portal."
            },
            "cuadernoId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^pjq_[a-zA-Z0-9_-]{16,80}$",
                  "description": "Identificador estable de cuaderno, obtenido de causas.detallar."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cuaderno al que corresponde la información; null para una sección de toda la causa."
            },
            "seccion": {
              "type": "string",
              "enum": [
                "cabecera",
                "historia",
                "litigantes",
                "notificaciones",
                "escritos_por_resolver",
                "exhortos",
                "remisiones",
                "documentos",
                "diligencias",
                "liquidacion",
                "materias"
              ],
              "description": "Sección concreta cuya cobertura se informa."
            },
            "estado": {
              "type": "string",
              "enum": [
                "con_datos",
                "sin_registros",
                "parcial",
                "fallida",
                "no_accesible",
                "no_implementada"
              ],
              "description": "Solo con_datos y sin_registros acreditan revisión completa de esta sección. Los otros valores indican información pendiente o inaccesible."
            },
            "revisadaEn": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                  "description": "Instante ISO 8601 con zona horaria."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Instante ISO 8601 de revisión; null si esa sección no se revisó."
            },
            "registrosObservados": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filas observadas en la sección; null significa que no se pudo contar, no cero."
            },
            "codigoIncidencia": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^pjud_[a-z_]+$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Código saneado; nunca mensajes, cookies o HTML del proveedor."
            }
          },
          "required": [
            "causaId",
            "cuadernoId",
            "seccion",
            "estado",
            "revisadaEn",
            "registrosObservados",
            "codigoIncidencia"
          ],
          "additionalProperties": false
        },
        "description": "Secciones efectivamente revisadas y sus límites, para las causas de esta consulta."
      }
    },
    "required": [
      "documento",
      "paginas",
      "textoTruncado",
      "siguientePagina",
      "siguienteOffset",
      "versionExtraccion",
      "incidenciaExtraccion",
      "enlaceOriginal",
      "estadoDatos",
      "observadoHasta",
      "cobertura"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Errores de esta tool [#errores-de-esta-tool]

| Código                | HTTP | Reintentable | Qué hacer                                                                     |
| --------------------- | ---- | ------------ | ----------------------------------------------------------------------------- |
| `connection_disabled` | 403  | no           | Reactívala en /connections o usa otra conexión del mismo sistema.             |
| `alcance_not_enabled` | 403  | no           | Habilita el alcance en /connections o quítalo del input de la sincronización. |

Toda llamada puede devolver además los códigos transversales (`validation_error`, `unauthorized`, `scope_not_granted`, `rate_limited`, entre otros): el detalle vive en el [catálogo de errores](../errores).

## Próximos pasos [#próximos-pasos]

* [`pjud.conexion.sincronizar`](./conexion-sincronizar): la tool que escribe los datos que esta lectura devuelve.
* [Sincronizar y consultar](/docs/conceptos/sincronizar-consultar): por qué leer datos reales son dos pasos.
