Documentación de Catálogos
Los catálogos permiten normalizar y enriquecer los datos extraídos de documentos mediante la búsqueda automática en maestros de datos privados. Puedes crear catálogos con información de proveedores, clientes, productos, etc., y el sistema buscará automáticamente coincidencias durante las extracciones.
¿Cómo funcionan los catálogos?
- Crear un catálogo: Sube un archivo CSV/XLSX con tus datos maestros
- Configurar campos de catálogo: En tu habilidad, marca campos para usar catálogos
- Extracciones automáticas: El sistema busca coincidencias y enriquece los datos
POST /v1/catalogs
Crea un nuevo catálogo desde un archivo CSV o XLSX para normalizar y enriquecer datos extraídos.
/v1/catalogsHeaders
Content-Type: multipart/form-data
x-api-key: TU_API_KEY Form Data
nombre*: Nombre del catálogodescripcion: Descripción del catálogofile*: Archivo CSV o XLSX con los datos del catálogo
Ejemplos de petición
curl -X POST "https://api-docmind.devol.es/v1/catalogs" \
-H "x-api-key: TU_API_KEY" \
-F "nombre=Catálogo de Proveedores" \
-F "descripcion=Maestro con todos los proveedores de la empresa" \
-F "file=@proveedores.csv" Respuesta
{
"message": "Catálogo creado exitosamente con datos importados",
"catalog": {
"id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae",
"nombre": "Catálogo de Prueba",
"descripcion": "Catálogo creado para testing de la API",
"fecha_creacion": "2025-06-25T09:20:08.040256+00:00",
"cliente_id": "62242e32-ba8f-4b59-9c4b-7867fc51a5f6",
"columnas": [
{
"id": "2a972fb9-8659-44ac-8d3f-67aa8ace7d9c",
"nombre": "id_proveedor",
"orden": 1,
"tipo": "string"
},
{
"id": "3dfbec16-823f-40ba-acb4-d48a75e65455",
"nombre": "nombre_empresa",
"orden": 2,
"tipo": "string"
}
]
},
"import_summary": {
"total_rows": 4,
"successful": 4,
"failed": 0,
"has_errors": false
}
} El catálogo se crea exitosamente con todas las columnas detectadas automáticamente desde el archivo. La respuesta incluye el catálogo completo con sus columnas y un resumen de la importación de datos.
GET /v1/catalogs
Obtiene todos los catálogos disponibles para tu organización.
/v1/catalogsHeaders
x-api-key: TU_API_KEY Query Parameters
include_details: (opcional) Si es "true", incluye información detallada de columnas. Por defecto: falseclient_id: (solo global_admin) ID del cliente del cual obtener los catálogos
Ejemplos de petición
curl -X GET "https://api-docmind.devol.es/v1/catalogs?include_details=true" \
-H "x-api-key: TU_API_KEY" Respuesta
{
"message": "Catálogos obtenidos exitosamente",
"catalogs": [
{
"id": "95f09806-dea9-45aa-8569-a9d9bc59f4fe",
"nombre": "Proveedores Devol",
"descripcion": "Este es un maestro con todos los proveedores de Devol",
"stats": {
"total_columns": 22,
"total_records": 11
},
"columns": [
{
"id": "32ba9771-1bb7-4dd7-8000-8970435035ef",
"nombre": "id_proveedor",
"orden": 1,
"tipo": "string"
},
{
"id": "8a039cba-11e4-43b5-bc67-c61b3934003f",
"nombre": "nombre_empresa",
"orden": 2,
"tipo": "string"
}
]
}
],
"meta": {
"total_catalogs": 1,
"include_details": true
}
} Devuelve una lista de catálogos con información básica. Si include_details=true, incluye también la estructura de columnas de cada catálogo.
GET /v1/catalogs/{catalog_id}
Obtiene un catálogo específico por su ID con detalles completos incluyendo todas sus columnas.
/v1/catalogs/{catalog_id}Headers
x-api-key: TU_API_KEY Query Parameters
include_records_count: (opcional) Si es "false", no incluye el conteo de registros. Por defecto: true
Ejemplos de petición
curl -X GET "https://api-docmind.devol.es/v1/catalogs/91a7be6e-aab6-4cbf-8898-384dcfb18aae" \
-H "x-api-key: TU_API_KEY" Respuesta
{
"message": "Catálogo obtenido exitosamente",
"catalog": {
"id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae",
"nombre": "Catálogo de Prueba",
"descripcion": "Catálogo creado para testing de la API",
"stats": {
"total_columns": 10,
"total_records": 4
},
"columns": [
{
"id": "2a972fb9-8659-44ac-8d3f-67aa8ace7d9c",
"nombre": "id_proveedor",
"orden": 1,
"tipo": "string"
},
{
"id": "3dfbec16-823f-40ba-acb4-d48a75e65455",
"nombre": "nombre_empresa",
"orden": 2,
"tipo": "string"
}
]
}
} Devuelve la información completa del catálogo incluyendo todas sus columnas ordenadas por posición.
PUT /v1/catalogs/{catalog_id}
Actualiza un catálogo existente reemplazando su contenido con un archivo CSV o XLSX. ELIMINA todos los registros existentes y los reemplaza con los datos del archivo.
/v1/catalogs/{catalog_id}Headers
Content-Type: multipart/form-data
x-api-key: TU_API_KEY Form Data
file*: Archivo CSV o XLSX con los nuevos datosnombre: Nuevo nombre para el catálogodescripcion: Nueva descripción para el catálogo
Ejemplos de petición
curl -X PUT "https://api-docmind.devol.es/v1/catalogs/91a7be6e-aab6-4cbf-8898-384dcfb18aae" \
-H "x-api-key: TU_API_KEY" \
-F "nombre=Catálogo Actualizado" \
-F "descripcion=Catálogo con datos actualizados" \
-F "file=@proveedores_actualizados.csv" Respuesta
{
"message": "Catálogo actualizado exitosamente",
"catalog": {
"id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae",
"nombre": "Catálogo de Prueba Actualizado",
"descripcion": "Catálogo creado para testing de la API",
"last_modification": "2025-06-25T09:32:57.065231+00:00"
},
"summary": {
"columns": {
"added": 1,
"modified": 0,
"missing_in_file": 0
},
"records": {
"deleted": 4,
"imported": 3,
"failed": 0
},
"metadata_updated": {
"name": true,
"description": false
}
}
} La actualización elimina todos los registros existentes y los reemplaza con los del archivo. Añade nuevas columnas si las encuentra, pero mantiene las columnas existentes. El resumen muestra todos los cambios realizados.
GET /v1/catalogs/{catalog_id}/columns
Obtiene todas las columnas de un catálogo ordenadas por posición.
/v1/catalogs/{catalog_id}/columnsHeaders
x-api-key: TU_API_KEY Ejemplos de petición
curl -X GET "https://api-docmind.devol.es/v1/catalogs/91a7be6e-aab6-4cbf-8898-384dcfb18aae/columns" \
-H "x-api-key: TU_API_KEY" Respuesta
{
"message": "Columnas obtenidas exitosamente",
"columns": [
{
"id": "2a972fb9-8659-44ac-8d3f-67aa8ace7d9c",
"nombre": "id_proveedor",
"orden": 1,
"tipo": "string"
},
{
"id": "3dfbec16-823f-40ba-acb4-d48a75e65455",
"nombre": "nombre_empresa",
"orden": 2,
"tipo": "string"
}
],
"meta": {
"total_columns": 10,
"catalog_id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae"
}
} Devuelve todas las columnas del catálogo con su información de tipo y orden.
GET /v1/catalogs/{catalog_id}/records
Obtiene los registros de un catálogo con paginación optimizada.
/v1/catalogs/{catalog_id}/recordsHeaders
x-api-key: TU_API_KEY Query Parameters
page: (opcional) Número de página. Por defecto: 1per_page: (opcional) Registros por página (máximo 1000). Por defecto: 50all: (opcional) Si es "true", devuelve todos los registros sin paginación
Ejemplos de petición
curl -X GET "https://api-docmind.devol.es/v1/catalogs/91a7be6e-aab6-4cbf-8898-384dcfb18aae/records?page=1&per_page=2" \
-H "x-api-key: TU_API_KEY" Respuesta
{
"message": "Registros obtenidos exitosamente",
"records": [
{
"id": "e173ccfd-3d47-4c4f-9061-6c9969981140",
"valores": {
"id_proveedor": "PROV001",
"nombre_empresa": "Acme Corp",
"contacto_principal": "Juan Pérez",
"categoria": "Tecnología",
"ciudad": "Madrid",
"telefono": "+34 91 123 4567",
"email": "juan@acme.com",
"activo": true,
"fecha_alta": "01/15/2023",
"volumen_ventas": 150000
}
}
],
"pagination": {
"total": 4,
"page": 1,
"per_page": 2,
"total_pages": 2,
"has_next": true,
"has_prev": false
},
"meta": {
"catalog_id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae"
}
} Devuelve los registros del catálogo con información de paginación. Cada registro incluye un ID único y un objeto "valores" con todos los datos.
POST /v1/catalogs/{catalog_id}/records/search
Busca registros en un catálogo basado en criterios específicos de columnas.
/v1/catalogs/{catalog_id}/records/searchHeaders
Content-Type: application/json
x-api-key: TU_API_KEY Body (JSON)
{
"criteria": {
"categoria": "Tecnología",
"activo": true
},
"page": 1,
"per_page": 50
} criteria: Objeto con los criterios de búsqueda (nombre_columna: valor_a_buscar)page: (opcional) Número de página. Por defecto: 1per_page: (opcional) Registros por página (máximo 1000). Por defecto: 50
Ejemplos de petición
curl -X POST "https://api-docmind.devol.es/v1/catalogs/91a7be6e-aab6-4cbf-8898-384dcfb18aae/records/search" \
-H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"criteria": {
"categoria": "Tecnología",
"activo": true
},
"page": 1,
"per_page": 10
}' Respuesta
{
"message": "Búsqueda completada exitosamente",
"records": [
{
"id": "e173ccfd-3d47-4c4f-9061-6c9969981140",
"valores": {
"id_proveedor": "PROV001",
"nombre_empresa": "Acme Corp",
"categoria": "Tecnología",
"activo": true
}
}
],
"pagination": {
"total": 1,
"page": 1,
"per_page": 10,
"total_pages": 1,
"has_next": false,
"has_prev": false
},
"search": {
"criteria": {
"categoria": "Tecnología",
"activo": true
},
"matches_found": 1
},
"meta": {
"catalog_id": "91a7be6e-aab6-4cbf-8898-384dcfb18aae"
}
} Devuelve los registros que coinciden con los criterios especificados. La búsqueda es exacta para cada criterio y todos deben cumplirse (AND lógico).
Casos de Uso Comunes
1. Normalización de Proveedores
Crea un catálogo con información completa de proveedores y configura un campo de catálogo en tu habilidad. Cuando extraigas facturas, el sistema buscará automáticamente el proveedor y completará datos como contacto, teléfono y dirección.
2. Validación de Clientes
Mantén un catálogo actualizado de clientes activos. Durante la extracción de contratos o pedidos, verifica automáticamente que los clientes existen y obtén su información comercial.
3. Enriquecimiento de Productos
Almacena especificaciones técnicas, precios y categorías de productos. Al procesar órdenes de compra, completa automáticamente los detalles de cada producto.
Códigos de Error
400 Bad Request: Error de validación del archivo o parámetros inválidos.401 Unauthorized: Falta o es inválido elx-api-key.403 Forbidden: Sin permisos para acceder o modificar el catálogo.404 Not Found: No se encontró el catálogo solicitado.500 Internal Server Error: Error interno (reintentar más tarde o contactar al soporte).
Limitaciones
- Formatos soportados: CSV y XLSX únicamente
- Tamaño máximo: 10MB por archivo
- Registros por página: Máximo 1000 en consultas paginadas
- Búsqueda: Los criterios son exactos (sensible a mayúsculas/minúsculas)
- Actualización: Reemplaza completamente los datos existentes