Habilidades (API Interna)
Gestión completa de habilidades de extracción incluyendo CRUD, reordenamiento de campos y sistema de aprendizaje.
Secciones
- CRUD de Habilidades — Crear, leer, actualizar, eliminar
- Reordenamiento — Reordenar campos y subcampos
- Aprendizaje — Mejorar habilidades con feedback
CRUD de Habilidades
GET /api/habilidad/
Lista todas las habilidades del cliente actual.
/api/habilidad/Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/ \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{
"habilidades": [
{
"id": "uuid-hab-1",
"nombre": "Factura",
"slug": "factura",
"info_adicional": "Extraer datos de facturas",
"campos": [...],
"created_at": "2025-01-15T10:00:00Z"
}
]
}Lista de habilidades con sus campos configurados.
Errores
401UnauthorizedToken inválido.
{"msg": "Token inválido"}GET /api/habilidad/{id}
Obtiene una habilidad específica con todos sus campos y configuración.
/api/habilidad/{id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/UUID_HABILIDAD \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{
"id": "uuid-hab-1",
"nombre": "Factura",
"slug": "factura",
"info_adicional": "Extraer datos de facturas",
"campos": [
{"id": "campo-1", "nombre": "numero_factura", "tipo": "string", "orden": 1, "descripcion": "Número de factura"},
{"id": "campo-2", "nombre": "fecha", "tipo": "date", "orden": 2, "descripcion": "Fecha de emisión"}
]
}Habilidad completa con todos sus campos ordenados.
Errores
404Not FoundHabilidad no encontrada.
{"error": "Habilidad no encontrada"}POST /api/habilidad/
Crea una nueva habilidad de extracción.
/api/habilidad/Headers
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"nombre": "Factura",
"info_adicional": "Extraer datos principales de facturas",
"campos": [
{"nombre": "numero_factura", "tipo": "string", "descripcion": "Número de factura"},
{"nombre": "monto_total", "tipo": "float", "descripcion": "Monto total"}
]
} nombre: (obligatorio) Nombre de la habilidad.info_adicional: (opcional) Contexto adicional para la IA.campos: (obligatorio) Lista de campos con nombre, tipo y descripcion.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/habilidad/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer JWT_TOKEN" \
-d '{"nombre": "Factura", "campos": [{"nombre": "total", "tipo": "float", "descripcion": "Total"}]}' Respuesta
{"message": "Habilidad creada exitosamente", "habilidad": {"id": "uuid-new", "nombre": "Factura", "slug": "factura"}}Habilidad creada con su ID y slug generado.
Errores
400Bad RequestDatos inválidos o faltantes.
{"error": "El nombre es obligatorio"}409ConflictYa existe una habilidad con ese nombre.
{"error": "Ya existe una habilidad con ese nombre"}PUT /api/habilidad/{id}
Actualiza una habilidad existente (nombre, info adicional, campos).
/api/habilidad/{id}Headers
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"nombre": "Factura Actualizada",
"info_adicional": "Nuevo contexto",
"campos": [...]
} nombre: (opcional) Nuevo nombre.info_adicional: (opcional) Nueva información adicional.campos: (opcional) Lista actualizada de campos.
Ejemplos
curl -X PUT https://api-docmind.devol.es/api/habilidad/UUID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer JWT_TOKEN" \
-d '{"nombre": "Factura v2", "info_adicional": "Versión actualizada"}' Respuesta
{"message": "Habilidad actualizada exitosamente"}Confirmación de la actualización.
Errores
404Not FoundHabilidad no encontrada.
{"error": "Habilidad no encontrada"}400Bad RequestDatos inválidos.
{"error": "Datos inválidos"}DELETE /api/habilidad/{id}
Elimina una habilidad y todos sus campos asociados.
/api/habilidad/{id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X DELETE https://api-docmind.devol.es/api/habilidad/UUID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Habilidad eliminada exitosamente"}La habilidad y sus campos se eliminan permanentemente.
Errores
404Not FoundHabilidad no encontrada.
{"error": "Habilidad no encontrada"}GET /api/habilidad/{id}/prompt-preview
Obtiene una vista previa del prompt que se envía a la IA para esta habilidad.
/api/habilidad/{id}/prompt-previewHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/UUID/prompt-preview \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"prompt": "Extrae los siguientes campos del documento...\n- numero_factura (string): ..."}El prompt completo que se generaría al ejecutar una extracción.
Errores
404Not FoundHabilidad no encontrada.
{"error": "Habilidad no encontrada"}Reordenamiento de campos
PUT /api/habilidad/{id}/reorder
Reordena los campos de una habilidad.
/api/habilidad/{id}/reorderHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"orden": ["campo-uuid-2", "campo-uuid-1", "campo-uuid-3"]
} orden: (obligatorio) Lista ordenada de IDs de campos.
Ejemplos
curl -X PUT https://api-docmind.devol.es/api/habilidad/UUID/reorder \
-H "Content-Type: application/json" \
-H "Authorization: Bearer JWT_TOKEN" \
-d '{"orden": ["campo-2", "campo-1", "campo-3"]}' Respuesta
{"message": "Campos reordenados exitosamente"}Los campos se reordenan según la lista proporcionada.
Errores
400Bad RequestLista de IDs inválida.
{"error": "IDs de campos inválidos"}PUT /api/habilidad/{id}/campos/{campo_id}/subcampos/reorder
Reordena los subcampos de un campo tipo objeto.
/api/habilidad/{id}/campos/{campo_id}/subcampos/reorderHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"orden": ["sub-uuid-2", "sub-uuid-1"]} orden: (obligatorio) Lista ordenada de IDs de subcampos.
Ejemplos
curl -X PUT https://api-docmind.devol.es/api/habilidad/UUID/campos/CAMPO_ID/subcampos/reorder \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"orden": ["sub-2", "sub-1"]}' Respuesta
{"message": "Subcampos reordenados exitosamente"}Subcampos reordenados.
Errores
400Bad RequestLista de IDs inválida.
{"error": "IDs inválidos"}Sistema de Aprendizaje
El sistema de aprendizaje permite mejorar las habilidades de extracción de forma iterativa usando feedback humano.
POST /api/habilidad/{id}/aprendizaje/iniciar
Inicia una sesión de aprendizaje para mejorar la extracción con un documento de ejemplo.
/api/habilidad/{id}/aprendizaje/iniciarHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"extraction_id": "uuid-extraction",
"model": "gpt-4o"
} extraction_id: (obligatorio) ID de la extracción de ejemplo.model: (opcional) Modelo de IA a usar.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/iniciar \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"extraction_id": "uuid-extraction"}' Respuesta
{"message": "Sesión de aprendizaje iniciada", "sesion_id": "uuid-sesion", "preview": {...}}Sesión creada con preview de los resultados de la extracción.
Errores
400Bad RequestFalta extraction_id.
{"error": "extraction_id es obligatorio"}404Not FoundExtracción o habilidad no encontrada.
{"error": "Extracción no encontrada"}409ConflictYa existe una sesión activa.
{"error": "Ya existe una sesión de aprendizaje activa"}GET /api/habilidad/{id}/aprendizaje/activa
Obtiene la sesión de aprendizaje activa de una habilidad.
/api/habilidad/{id}/aprendizaje/activaHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/activa \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"sesion": {"id": "uuid-sesion", "status": "activa", "created_at": "...", "preview": {...}}}Sesión activa con su estado y preview actual.
Errores
404Not FoundNo hay sesión activa.
{"error": "No hay sesión de aprendizaje activa"}GET /api/habilidad/{id}/aprendizaje/{sesion_id}
Consulta los detalles de una sesión de aprendizaje específica.
/api/habilidad/{id}/aprendizaje/{sesion_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/SESION_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"sesion": {"id": "uuid-sesion", "status": "activa", "feedback_history": [], "preview": {...}}}Detalles completos de la sesión incluyendo historial de feedback.
Errores
404Not FoundSesión no encontrada.
{"error": "Sesión no encontrada"}DELETE /api/habilidad/{id}/aprendizaje/{sesion_id}
Descarta una sesión de aprendizaje sin aplicar cambios.
/api/habilidad/{id}/aprendizaje/{sesion_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X DELETE https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/SESION_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Sesión de aprendizaje descartada"}La sesión se elimina sin aplicar cambios a la habilidad.
Errores
404Not FoundSesión no encontrada.
{"error": "Sesión no encontrada"}POST /api/habilidad/{id}/aprendizaje/{sesion_id}/feedback
Envía feedback sobre los resultados de la extracción de prueba para mejorar el prompt.
/api/habilidad/{id}/aprendizaje/{sesion_id}/feedbackHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"feedback": "El campo numero_factura no extrajo correctamente. Debería ser FAC-001.",
"campos_corregidos": {"numero_factura": "FAC-001"}
} feedback: (obligatorio) Texto con las correcciones.campos_corregidos: (opcional) Campos con valores correctos.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/SESION_ID/feedback \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"feedback": "Corregir campo total", "campos_corregidos": {"total": "1500"}}' Respuesta
{"message": "Feedback recibido", "new_preview": {...}}El sistema re-procesa con el feedback y devuelve un nuevo preview.
Errores
400Bad RequestFeedback vacío.
{"error": "El feedback es obligatorio"}404Not FoundSesión no encontrada.
{"error": "Sesión no encontrada"}POST /api/habilidad/{id}/aprendizaje/{sesion_id}/re-extraer
Re-ejecuta la extracción con el prompt mejorado para verificar los resultados.
/api/habilidad/{id}/aprendizaje/{sesion_id}/re-extraerHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X POST https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/SESION_ID/re-extraer \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Re-extracción completada", "preview": {...}}Nuevo preview con los resultados de la re-extracción.
Errores
404Not FoundSesión no encontrada.
{"error": "Sesión no encontrada"}POST /api/habilidad/{id}/aprendizaje/{sesion_id}/aprobar
Aprueba los resultados del aprendizaje y aplica los cambios al prompt de la habilidad.
/api/habilidad/{id}/aprendizaje/{sesion_id}/aprobarHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X POST https://api-docmind.devol.es/api/habilidad/UUID/aprendizaje/SESION_ID/aprobar \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Aprendizaje aprobado y aplicado exitosamente"}Los cambios del prompt se guardan permanentemente en la habilidad.
Errores
404Not FoundSesión no encontrada.
{"error": "Sesión no encontrada"}GET /api/habilidad/{id}/entrenamientos
Obtiene el historial de entrenamientos (aprendizajes) de una habilidad.
/api/habilidad/{id}/entrenamientosHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/habilidad/UUID/entrenamientos \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{
"entrenamientos": [
{"id": "uuid", "fecha": "2025-01-15T10:00:00Z", "status": "aprobado", "feedback_count": 3}
]
}Lista de entrenamientos con su estado y cantidad de feedback.
Errores
404Not FoundHabilidad no encontrada.
{"error": "Habilidad no encontrada"}