Catálogos (API Interna)
CRUD completo de catálogos con gestión de columnas, registros, importación masiva y vinculación con campos de habilidades.
GET /api/catalogos/
Lista todos los catálogos del cliente con estadísticas.
/api/catalogos/Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/catalogos/ \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"catalogos": [{"id": "uuid", "nombre": "Proveedores", "descripcion": "...", "total_registros": 150, "total_columnas": 10}]}Lista de catálogos con sus estadísticas básicas.
Errores
401UnauthorizedToken inválido.
{"msg": "Token inválido"}GET /api/catalogos/{id}
Obtiene un catálogo con sus columnas y estadísticas.
/api/catalogos/{id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/catalogos/UUID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"catalogo": {"id": "uuid", "nombre": "Proveedores", "columnas": [{"id": "col-1", "nombre": "nombre", "tipo": "string"}], "total_registros": 150}}Catálogo completo con estructura de columnas.
Errores
404Not FoundCatálogo no encontrado.
{"error": "Catálogo no encontrado"}POST /api/catalogos/
Crea un nuevo catálogo desde un archivo CSV o XLSX.
/api/catalogos/Headers
Content-Type: multipart/form-data
Authorization: Bearer JWT_TOKEN Form Data
nombre*: Nombre del catálogodescripcion: Descripciónfile*: Archivo CSV o XLSX
Ejemplos
curl -X POST https://api-docmind.devol.es/api/catalogos/ \
-H "Authorization: Bearer JWT_TOKEN" \
-F "nombre=Proveedores" -F "file=@proveedores.csv" Respuesta
{"message": "Catálogo creado", "catalogo": {"id": "uuid", "nombre": "Proveedores"}, "import_summary": {"total": 100, "successful": 100, "failed": 0}}Catálogo creado con resumen de la importación.
Errores
400Bad RequestArchivo faltante o formato inválido.
{"error": "Se requiere un archivo CSV o XLSX"}PUT /api/catalogos/{id}
Actualiza un catálogo reemplazando sus datos con un nuevo archivo.
/api/catalogos/{id}Headers
Content-Type: multipart/form-data
Authorization: Bearer JWT_TOKEN Form Data
nombre: Nuevo nombredescripcion: Nueva descripciónfile*: Archivo CSV o XLSX con nuevos datos
Ejemplos
curl -X PUT https://api-docmind.devol.es/api/catalogos/UUID \
-H "Authorization: Bearer JWT_TOKEN" \
-F "nombre=Proveedores v2" -F "file=@nuevos_datos.csv" Respuesta
{"message": "Catálogo actualizado", "summary": {"records": {"deleted": 100, "imported": 120}}}Datos reemplazados completamente.
Errores
404Not FoundCatálogo no encontrado.
{"error": "Catálogo no encontrado"}DELETE /api/catalogos/{id}
Elimina un catálogo y todos sus registros.
/api/catalogos/{id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X DELETE https://api-docmind.devol.es/api/catalogos/UUID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Catálogo eliminado exitosamente"}El catálogo y todos sus datos se eliminan permanentemente.
Errores
404Not FoundCatálogo no encontrado.
{"error": "Catálogo no encontrado"}GET /api/catalogos/{id}/columnas
Obtiene las columnas de un catálogo.
/api/catalogos/{id}/columnasHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/catalogos/UUID/columnas \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"columnas": [{"id": "col-1", "nombre": "nombre", "tipo": "string", "orden": 1}]}Lista de columnas ordenadas por posición.
Errores
404Not FoundCatálogo no encontrado.
{"error": "Catálogo no encontrado"}GET /api/catalogos/{id}/registros
Lista registros de un catálogo con paginación.
/api/catalogos/{id}/registrosHeaders
Authorization: Bearer JWT_TOKEN Query Parameters
page: (opcional) Página. Por defecto: 1per_page: (opcional) Registros por página. Por defecto: 50search: (opcional) Buscar en todos los campos
Ejemplos
curl -X GET "https://api-docmind.devol.es/api/catalogos/UUID/registros?page=1&per_page=50" \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"registros": [{"id": "rec-1", "valores": {"nombre": "ACME Corp"}}], "pagination": {"total": 150, "page": 1}}Registros paginados con sus valores.
Errores
404Not FoundCatálogo no encontrado.
{"error": "Catálogo no encontrado"}POST /api/catalogos/{id}/registros
Agrega un nuevo registro al catálogo.
/api/catalogos/{id}/registrosHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"valores": {"nombre": "Nueva Empresa", "nif": "B12345678"}} valores: (obligatorio) Objeto con los valores para cada columna.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/catalogos/UUID/registros \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"valores": {"nombre": "Nueva Empresa", "nif": "B12345678"}}' Respuesta
{"message": "Registro creado", "registro": {"id": "rec-new", "valores": {"nombre": "Nueva Empresa"}}}Registro creado con sus valores.
Errores
400Bad RequestValores faltantes o inválidos.
{"error": "Valores requeridos faltantes"}PUT /api/catalogos/{id}/registros/{registro_id}
Actualiza un registro existente del catálogo.
/api/catalogos/{id}/registros/{registro_id}Headers
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"valores": {"nombre": "Empresa Actualizada"}} valores: (obligatorio) Valores a actualizar.
Ejemplos
curl -X PUT https://api-docmind.devol.es/api/catalogos/UUID/registros/REC_ID \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"valores": {"nombre": "Empresa Actualizada"}}' Respuesta
{"message": "Registro actualizado exitosamente"}Confirmación de la actualización.
Errores
404Not FoundRegistro no encontrado.
{"error": "Registro no encontrado"}DELETE /api/catalogos/{id}/registros/{registro_id}
Elimina un registro del catálogo.
/api/catalogos/{id}/registros/{registro_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X DELETE https://api-docmind.devol.es/api/catalogos/UUID/registros/REC_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Registro eliminado exitosamente"}El registro se elimina permanentemente.
Errores
404Not FoundRegistro no encontrado.
{"error": "Registro no encontrado"}POST /api/catalogos/{id}/import
Importa registros masivamente desde un archivo CSV/XLSX sin reemplazar los existentes.
/api/catalogos/{id}/importHeaders
Content-Type: multipart/form-data
Authorization: Bearer JWT_TOKEN Form Data
file*: Archivo CSV o XLSX con registros a importar
Ejemplos
curl -X POST https://api-docmind.devol.es/api/catalogos/UUID/import \
-H "Authorization: Bearer JWT_TOKEN" -F "file=@nuevos_registros.csv" Respuesta
{"message": "Importación completada", "summary": {"total": 50, "successful": 48, "failed": 2}}Resumen de la importación con conteo de éxitos y fallos.
Errores
400Bad RequestArchivo inválido.
{"error": "Formato de archivo no soportado"}POST /api/catalogos/{id}/vincular-campo
Vincula un catálogo a un campo de una habilidad para matching automático.
/api/catalogos/{id}/vincular-campoHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"campo_id": "campo-uuid",
"columnas_busqueda": ["nombre_empresa"],
"columnas_salida": ["nombre_empresa", "nif", "direccion"],
"metodo_busqueda": "exacta",
"threshold": 0.8
} campo_id: (obligatorio) ID del campo de la habilidad.columnas_busqueda: (obligatorio) Columnas para buscar coincidencias.columnas_salida: (obligatorio) Columnas a incluir en el resultado.metodo_busqueda: (opcional) "exacta" o "aproximada". Por defecto: "exacta".threshold: (opcional) Umbral de similitud para búsqueda aproximada (0.0-1.0).
Ejemplos
curl -X POST https://api-docmind.devol.es/api/catalogos/UUID/vincular-campo \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"campo_id": "campo-uuid", "columnas_busqueda": ["nombre"], "columnas_salida": ["nombre", "nif"]}' Respuesta
{"message": "Campo vinculado exitosamente al catálogo"}El campo queda configurado para buscar en este catálogo durante las extracciones.
Errores
400Bad RequestColumnas inválidas.
{"error": "Columna nombre_xxx no existe en el catálogo"}404Not FoundCatálogo o campo no encontrado.
{"error": "Catálogo no encontrado"}