Archivos de los documentos
Qué archivos tiene N1 para cada documento y cómo descargarlos con URLs firmadas.
Cada documento (factura electrónica, nota crédito, cuenta de cobro o factura del exterior) trae un objeto files que describe los archivos que N1 tiene para él, y el imported_file_id del archivo cargado del que proviene:
"files": {
"original": { "available": true, "file_name": "FE-10422.zip", "extension": "zip", "content_type": "application/zip", "size": 48213 },
"pdf": { "status": "on_demand", "source": "n1" }
}
originales el archivo tal como llegó a N1 (por carga manual, correo, API o importación DIAN): XML, ZIP o PDF.available: falsesignifica que el documento no tiene archivo (por ejemplo, una cuenta de cobro creada a mano o importada desde Excel).pdf.statusindica la representación en PDF:availablecuando el archivo original ya es un PDF (source: "original");on_demandcuando N1 la extrae del ZIP o la genera a partir del XML al descargarla (source: "n1");nonecuando no existe.
Qué PDF puede ofrecer N1 según el tipo de documento:
| Documento | Original XML | Original ZIP | Original PDF |
|---|---|---|---|
| Factura electrónica | Se genera la representación gráfica DIAN | Se usa el PDF del ZIP o se genera desde el XML | El mismo archivo |
| Nota crédito | Sin PDF | Se usa el PDF incluido en el ZIP, si lo hay | El mismo archivo |
| Cuenta de cobro | — | — | El mismo archivo |
| Factura del exterior | — | — | El mismo archivo |
Descarga con GET /companies/{id}/<recurso>/{document_id}/original y .../pdf. Ambas rutas responden 302 con Location a una URL firmada de Amazon S3 válida por una hora: sigue la redirección sin reenviar el encabezado Authorization (con curl, usa -L) y no guardes la URL. Si la variante no existe, o on_demand no se pudo generar, la respuesta es 404 file_not_available; el documento existe y no hace falta reintentar.
El archivo de una carga (POST /files, correo o importación DIAN) se descarga con GET /companies/{id}/files/{file_id}/content, con el mismo comportamiento.