> ## Documentation Index
> Fetch the complete documentation index at: https://help.impactu.colav.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar archivo CIARP

> Sube un Excel CIARP (.xlsx), lo valida y devuelve un reporte de calidad en PDF.

> [!NOTE]
>
> Requiere sesión activa. El JWT se lee desde la cookie `access_token_cookie`
> y la solicitud debe llevar el encabezado `X-CSRF-TOKEN`. Se envía como
> `multipart/form-data`.

El reporte de calidad se envía por correo cada vez que el archivo se puede validar. Si el archivo no tiene errores, además se guarda en la carpeta de la institución en Google Drive, o en el almacenamiento local del servidor si Drive falla.

## Cuerpo de la solicitud

**file** `file` *required*

Archivo Excel `.xlsx` con los datos CIARP. Otro formato, un archivo que no se
puede leer o un archivo sin datos responden `400`.

## Respuesta

**success** `boolean`

`true` si el archivo no tiene errores. Con errores, la respuesta es `400` con
el mismo reporte.

**errors** `integer`

Número de errores encontrados en el archivo.

**warnings** `integer`

Número de advertencias.

**duplicates** `integer`

Número de registros duplicados detectados.

**pdf\_base64** `string | null`

Reporte de calidad en formato PDF codificado en Base64. `null` si el archivo
no tiene errores, advertencias ni duplicados.

**file\_msg** `string`

Solo con `200`: resultado del guardado, con el nombre con el que quedó el
archivo.

**msg** `string`

Solo en los errores: motivo del rechazo. Si faltan columnas o hay columnas sin nombre, la
respuesta es `422` y `details` lista cada problema.

```json 200 theme={null}
{
  "success": true,
  "errors": 0,
  "warnings": 3,
  "duplicates": 0,
  "pdf_base64": "JVBERi0xLjQKJ...",
  "file_msg": "Archivo ciarp_example-institution-id_2026-10-15_14:32.xlsx guardado correctamente."
}
```

```json 400 theme={null}
{ "success": false, "msg": "Archivo requerido" }
```

```json 400 — archivo con errores theme={null}
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
```

```json 400 — archivo vacío theme={null}
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
```

```json 401 theme={null}
{"msg": "Token inválido o expirado", "success": false}
```

```json 422 theme={null}
{
  "success": false,
  "errors": 1,
  "duplicates": 0,
  "msg": "El archivo enviado no cumple con el formato requerido de columnas",
  "details": ["Columnas faltantes: identificación"],
  "pdf_base64": "JVBERi0xLjQKJ..."
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.