Sincronización de productos mediante API

La sincronización de productos mediante API permite automatizar la creación y actualización de los productos de tu catálogo de Connectif desde un sistema externo. Puedes sincronizar productos individualmente o realizar actualizaciones masivas mediante un fichero CSV. 

En este artículo, aprenderás cómo importar productos de forma automática mediante la API de Connectif. 

  

Para hacer uso de la integración mediante API, necesitarás de un experto con conocimientos de programación.

 

Antes de empezar: casos de uso

Esta API cubre los siguientes casos de uso:

  • Si quieres crear o actualizar productos individualmente desde un sistema externo.
  • Si quieres automatizar periódicamente la sincronización de todos o gran parte de tus productos mediante un fichero CSV.

 

PASO 1. Creación de la clave API

1. Accede a Configuración de tienda en el menú lateral izquierdo.

2. En el selector de pestaña, ve a "API y accesos IP" y haz clic en API Keys.

Importación de productos mediante API - 1.png

 

3. Haz clic en el botón  Crear nueva API Key.

Importación de productos mediante API - 2.png

 

4. En la sección Importaciones y productos del panel de creación, habilita los permisos para "Leer", "Escribir" y "Borrar" de forma masiva.

Importación de productos mediante API - 3.png

 

5. Guarda la clave API y cópiala para, más tarde, utilizarla en tu script de automatización.

Importación de productos mediante API - 4.png

 

PASO 2. Elección del método de sincronización

(En este paso escogerás cómo enviar la información de los productos a Connectif según el volumen y la forma en que necesites actualizar tu catálogo).

6. Escoge el método de sincronización que mejor se adapte a tu caso:

  • API de Productos: Crear o actualizar productos individualmente.
  • API de Importaciones: Crear o actualizar grandes cantidades de productos mediante un fichero CSV.

2.1. Sincronización individual de productos

(En este apartado configurarás las llamadas a la API de Productos).

7. Crea el script de automatización desde tu sistema e incluye en él la API Key generada en el paso anterior.

8. Configura en el script una petición HTTP PATCH para crear o actualizar el producto en Connectif: https://api.connectif.cloud/products/product-id/{id}

  

Sustituye {id} por el identificador del producto en tu eCommerce. Esta operación crea el producto si no existe o actualiza el existente.

En la petición, indica:

  • La API Key para autenticar la llamada.
  • El tipo de contenido application/json.
  • La información del producto en el cuerpo de la petición.

9. Incluye en el cuerpo de la petición los siguientes atributos obligatorios:

  • name: nombre del producto.
  • productDetailUrl: URL de detalle del producto, que debe ser accesible.
  • unitPrice: precio unitario del producto.
 

Los campos name, productDetailUrl y unitPrice son obligatorios para crear o actualizar el producto.

 

Consulta todos los atributos disponibles y aprende cómo elaborar la estructura completa de la petición en la documentación de la API.

 

Ejemplo 1

Una vez creada, la petición tendrá un aspecto similar a este:

const apiKey = "TU_API_KEY";
const productId = "SKU-12345";
const url = `https://api.connectif.cloud/products/product-id/${productId}`;

const product = {
 name: "Zapatilla Running",
 productDetailUrl: "https://www.midominio.com/productos/SKU-12345",
 unitPrice: 39.95
};

async function main() {
 const response = await fetch(url, {
   method: "PATCH",
   headers: {
     "Authorization": `apiKey ${apiKey}`,
     "Content-Type": "application/json"
   },
   body: JSON.stringify(product)
 });

 const result = await response.json();
 console.log(result);
}

main();

 

2.2. Sincronización masiva de productos

(En este apartado configurarás una importación mediante API para crear o actualizar productos de forma masiva).

  

Para crear la importación necesitarás realizar una petición HTTP POST multipart/form-data, que enviará el fichero CSV y los diferentes metadatos (como el delimitador, el tipo de importación, etc.).

10. Crea y verifica que tu fichero CSV de importación cumpla las siguientes condiciones:

  • Utiliza encoding “UTF-8”.
  • La primera fila contiene las cabeceras de los campos.
  • Los datos de productos deben utilizar los mismos nombres de campo que se indican en este artículo.
 

En el siguiente CSV puedes ver un ejemplo de importación de productos con los campos obligatorios productDetailUrl, productId, name y unitPrice, junto con otros campos opcionales:

productDetailUrl,productId,name,unitPrice,availability,inStockUnits,brand
https://www.midominio.com/productos/SKU-12345,SKU-12345,Zapatilla Running,39.95,instock,25,Marca Ejemplo
https://www.midominio.com/productos/SKU-67890,SKU-67890,Zapatilla Trail,49.95,outofstock,0,Marca Ejemplo

11. Crea el script de automatización desde tu sistema e incluye en él la API Key generada en el PASO 1.

12. Configura en el script una petición HTTP POST al siguiente endpoint: https://api.connectif.cloud/imports/ 

13. Configura la petición con los datos necesarios para realizar la importación:

  • Indica products como tipo de importación.
  • Indica el delimitador utilizado en el fichero CSV.
  • Establece si quieres sobrescribir los datos existentes de los productos.
  • Establece si quieres actualizar únicamente los campos que estén vacíos.
  • Incluye el fichero CSV que contiene los productos que quieres importar.

14. Ejecuta la petición para iniciar la importación

 

Aprende cómo elaborar la estructura completa de la petición en la  documentación de la API.

 

Ejemplo 2

Una vez creada, la petición tendrá un aspecto similar a este:

const fetch = require('node-fetch');
const fs = require('fs');
const FormData = require('form-data');

const apiKey = process.env.API_KEY;
const filePath = process.env.FILE_PATH;

async function main() {
   const form = new FormData();

   form.append('type', 'products');
   form.append('delimiter', ',');
   form.append('overrideExisting', 'true');
   form.append('updateOnlyEmptyFields', 'false');
   form.append('file', fs.createReadStream(filePath));

   const response = await fetch('https://api.connectif.cloud/imports', {
       method: 'POST',
       headers: {
           'Authorization': `apiKey ${apiKey}`,
           ...form.getHeaders()
       },
       body: form
   });

   if (!response.ok) {
       console.error(response.status, await response.json());
       process.exit(1);
   }

   const { id, total } = await response.json();

   while (true) {
       const getResponse = await fetch(
           `https://api.connectif.cloud/imports/${id}`,
           {
               method: 'GET',
               headers: {
                   'Authorization': `apiKey ${apiKey}`
               }
           }
       );

       const { success, errors, status } = await getResponse.json();

       console.log(`completed ${success + errors} of ${total}`);

       if (status === 'finished') {
           console.log('Success');
           process.exit(0);
       }

       await new Promise(resolve => setTimeout(resolve, 2000));
   }
}

main().catch(error => {
   console.error(error);
   process.exit(1);
});
  

El script crea una importación de productos a partir del fichero CSV cuya ruta se establece mediante la variable de entorno FILE_PATH. Para ello, establece products como tipo de importación, utiliza , como delimitador, sobrescribe los productos existentes y mantiene updateOnlyEmptyFields como false.

El script crea una importación de productos a partir del fichero CSV cuya ruta se establece mediante la variable de entorno FILE_PATH. Para ello, establece products como tipo de importación, utiliza , como delimitador, sobrescribe los productos existentes y mantiene updateOnlyEmptyFields como false.

 


Preguntas frecuentes

¿Puedo consultar desde Connectif las importaciones realizadas mediante API?

Sí, el motor de importación es el mismo que utiliza la aplicación Connectif. Por tanto, podrás consultar en el listado de importaciones tanto las realizadas mediante API como las realizadas desde Connectif.

 

¿Cuántas importaciones se pueden encolar a la vez?

Es posible encolar un máximo de 10 importaciones a la vez. Cuando alcances este límite, deberás esperar a que se complete una importación antes de añadir otra a la cola.

 

¿Cuál es el tamaño máximo del fichero CSV?

El fichero CSV puede tener un tamaño máximo de 50 MB.

 

¿Puedo eliminar una importación mediante API?

Actualmente, es posible borrar el historial de importaciones solo en los estados finished o error.

 

¿Puedo cancelar una importación mediante API?

Una vez cargado el archivo desde la API, no es posible cancelar.

 

 

¡Éxito! 
Tu  sincronización de productos mediante API ya está lista.

 


¡Sigue aprendiendo!

Para aprovechar todo el potencial de tu cuenta en Connectif, te recomendamos continuar con los siguientes artículos: