POST /api/emisores/resolucion/{id}/crear-documento-prueba/
POST /api/emisores/resolucion/{id}/crear-documento-prueba/
Crea un documento de prueba en borrador sobre esta resolución.
POST /api/emisores/resolucion/{id}/crear-documento-prueba/, con
{"consecutivo": <n>} opcional.
Es el mismo documento que siembra el alta del software, pero de uno en uno y sobre la resolución que se indique. Sirve para completar un Set de Pruebas al que le faltan documentos sin tener que componerlos a mano.
El tipo lo decide la resolución, no quien llama: su tipo_factura
es el mismo código que el codigo_dian del tipo de documento, así que
una resolución de facturación (01) da una factura de venta y una de
documento soporte (05), un documento soporte.
Sin consecutivo toma el siguiente libre: el posterior al mayor que
ya se usó de esa resolución para ese tipo, o el primero del rango si
todavía no hay ninguno.
Solo lo crea: no lo firma ni lo envía. Para eso está emitir de
/api/documentos/documento/{id}/, que firma y envía.
operationId: emisores_resolucion_crear_documento_prueba_create
Autenticación
Sección titulada «Autenticación»Cualquiera de estas credenciales:
- LlaveApi — Llave de API de una integración. El valor completo es
Api-Key <prefijo>.<secreto>, tal como lo imprimemanage.py crear_llave_api. La llave alcanza exactamente los mismos emisores que la persona a cuyo nombre se creó.
Parámetros
Sección titulada «Parámetros»| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
id | path | integer | sí | Un valor de entero único que identifique este resolución. |
Cuerpo de la petición
Sección titulada «Cuerpo de la petición»Tipo de contenido: application/json · obligatorio.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
emisor | integer | sí | |
tipo_factura | integer | sí | |
numero_resolucion | string | sí | |
fecha_resolucion | string (date) | sí | |
prefijo | string | sí | |
rango_desde | integer (int64) | sí | |
rango_hasta | integer (int64) | sí | |
vigente_desde | string (date) | sí | |
vigente_hasta | string (date) | sí | |
clave_tecnica | string | no | |
activa | boolean | no |
Ejemplo
Sección titulada «Ejemplo»curl -X POST "https://api.rededoc.uk/api/emisores/resolucion/<id>/crear-documento-prueba/" \ -H "Authorization: <llaveapi>" \ -H "Content-Type: application/json" \ -d '{ "emisor": 1, "tipo_factura": 1, "numero_resolucion": "texto", "fecha_resolucion": "2026-01-31", "prefijo": "texto", "rango_desde": 0, "rango_hasta": 0, "vigente_desde": "2026-01-31", "vigente_hasta": "2026-01-31", "clave_tecnica": "texto", "activa": true }'Respuestas
Sección titulada «Respuestas»| Código | Descripción |
|---|---|
200 | |
400 | Error |
401 | Error |
404 | Error |
429 | Error |
200 — cuerpo
Sección titulada «200 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
id | integer | Solo lectura. |
emisor | integer | |
tipo_factura | integer | |
numero_resolucion | string | |
fecha_resolucion | string (date) | |
prefijo | string | |
rango_desde | integer (int64) | |
rango_hasta | integer (int64) | |
vigente_desde | string (date) | |
vigente_hasta | string (date) | |
activa | boolean |
{ "id": 1, "emisor": 1, "tipo_factura": 1, "numero_resolucion": "texto", "fecha_resolucion": "2026-01-31", "prefijo": "texto", "rango_desde": 0, "rango_hasta": 0, "vigente_desde": "2026-01-31", "vigente_hasta": "2026-01-31", "activa": true}400 — cuerpo
Sección titulada «400 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}401 — cuerpo
Sección titulada «401 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}404 — cuerpo
Sección titulada «404 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}429 — cuerpo
Sección titulada «429 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}RedEDoc es un servicio de Semántica Digital S.A.S.