POST /api/documentos/documento/{id}/respuesta-validado/
POST /api/documentos/documento/{id}/respuesta-validado/
Avisa la validación a los webhooks del emisor y, con un 200, la da por respondida.
POST /api/documentos/documento/{id}/respuesta-validado/. El documento
tiene que estar aceptado y sin respuesta_validado. Se manda el aviso de
validación a cada webhook del emisor con estado_validado, esperando la
respuesta, y si alguno contesta 200 el documento queda con
respuesta_validado = true.
Si el emisor no tiene ninguno, no hay a quién avisar: el documento se
marca igual, sin enviar nada, y avisos sale vacío.
Es lo mismo que se hace solo cuando la DIAN acepta el documento; este
endpoint recupera los que allí se quedaron sin marcar. Si ninguno
responde 200 es un 502: el documento sigue igual y se puede volver a
llamar. Cada envío deja su aviso en
/api/emisores/webhook-aviso/, con el código y el error.
operationId: documentos_documento_respuesta_validado_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 | string (uuid) | sí | Un Cadena UUID que identifique este documento electrónico. |
Ejemplo
Sección titulada «Ejemplo»curl -X POST "https://api.rededoc.uk/api/documentos/documento/<id>/respuesta-validado/" \ -H "Authorization: <llaveapi>"Respuestas
Sección titulada «Respuestas»| Código | Descripción |
|---|---|
200 | |
400 | |
401 | Error |
404 | Error |
429 | Error |
502 |
200 — cuerpo
Sección titulada «200 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
respuesta_validado | boolean | |
avisos | array<WebhookAviso> |
{ "respuesta_validado": true, "avisos": [ { "id": 1, "webhook": 1, "documento": "00000000-0000-0000-0000-000000000000", "tipo": null, "estado": null, "codigo_http": 1, "error": "texto", "cuerpo": "texto", "creado_en": "2026-01-31T10:00:00-05:00", "enviado_en": "2026-01-31T10:00:00-05:00" } ]}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" } ]}502 — cuerpo
Sección titulada «502 — 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.