Enviar archivo CIARP
curl --request POST \
--url https://api.dev.impactu.colav.co/submit/ciarp \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.dev.impactu.colav.co/submit/ciarp"
payload = {}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.dev.impactu.colav.co/submit/ciarp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.impactu.colav.co/submit/ciarp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.impactu.colav.co/submit/ciarp"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.impactu.colav.co/submit/ciarp")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.impactu.colav.co/submit/ciarp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"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."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"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..."
}
Submit
Enviar archivo CIARP
Sube un Excel CIARP (.xlsx), lo valida y devuelve un reporte de calidad en PDF.
POST
/
submit
/
ciarp
Enviar archivo CIARP
curl --request POST \
--url https://api.dev.impactu.colav.co/submit/ciarp \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.dev.impactu.colav.co/submit/ciarp"
payload = {}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.dev.impactu.colav.co/submit/ciarp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.impactu.colav.co/submit/ciarp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.impactu.colav.co/submit/ciarp"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.impactu.colav.co/submit/ciarp")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.impactu.colav.co/submit/ciarp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"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."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"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..."
}
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.Cuerpo de la solicitud
file
requerido
Archivo Excel
.xlsx con los datos CIARP. Otro formato, un archivo que no se
puede leer o un archivo sin datos responden 400.Respuesta
boolean
true si el archivo no tiene errores. Con errores, la respuesta es 400 con
el mismo reporte.integer
Número de errores encontrados en el archivo.
integer
Número de advertencias.
integer
Número de registros duplicados detectados.
string | null
Reporte de calidad en formato PDF codificado en Base64.
null si el archivo
no tiene errores, advertencias ni duplicados.string
Solo con
200: resultado del guardado, con el nombre con el que quedó el
archivo.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.{
"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."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"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..."
}