Carga de archivos CSV por SFTP

Los comerciantes que elijan alimentar a Rappi con datos de inventario actualizados mediante la transferencia de archivos CSV necesitan comprender la autenticación, las convenciones de archivos y esquema indicados en este documento.

Quienes se integren con nuestra API de inventario pueden encontrar un desglose completo del esquema de autenticación y el esquema de carga JSON en la documentación de la especificación de la API.

Autenticación SFTP

Utiliza las credenciales de autenticación (nombre de usuario-contraseña) proporcionadas por tu TAM en cada carga de archivo.

Carpeta de destino

Siempre transfiere tus archivos CSV de inventario a la carpeta uploads en el servidor SFTP.

Convenciones de archivo

Para que Rappi ingiera exitosamente tus datos de inventario, cada archivo CSV DEBE cumplir con las siguientes convenciones:

  1. Los archivos no deben incluir datos de tiendas múltiples.

  2. Los nombres de los archivos deben seguir la convención <store_id> _ <unix_time> .csv. Para más información sobre store_id, consulta la sección Tu lista de tiendas de la guía de integración.

El Tiempo Unix se usa ampliamente en sistemas operativos y formatos de archivo. Representa el número de segundos que han transcurrido desde el 1 de enero de 1970.

Esta marca de tiempo identifica cuándo el proceso ETL creó el archivo CSV. Rappi aprovecha esto para asegurarse de que los datos de inventario más actualizados siempre se apliquen a su catálogo orientado al cliente.

  1. Los nombres de los archivos siempre se deben ser añadidos con la extensión .csv.

  2. Los archivos siempre deben usar codificación UTF-8.

  3. La primera fila de cada archivo siempre debe llevar los nombres de las columnas.

Consulta la sección del esquema de datos para obtener información sobre las columnas obligatorias y opcionales.

  1. Los nombres de las columnas siempre deben estar en minúsculas.

  2. Siempre utiliza ; (punto y coma) para separar las columnas.

  3. Pon entre comillas TODOS los valores string (es decir, valores de texto), por ejemplo: "ejemplo".

  4. Siempre utiliza . (punto) como separador decimal.

Un archivo de ejemplo está disponible aquí: inventory-upload-example.csv

Esquema de datos

Hay siete columnas obligatorias que siempre deben pasarse en el archivo CSV. Estas están marcadas con la etiqueta required en todo el esquema.

store_id

required string
  • Un identificador generado por el comerciante para la tienda que tiene actualizado su inventario.
  • Si tienes varias tiendas, aplica un identificador único a cada una de ellas.
  • Nuestro motor de ingestión de datos asigna tu store_id con los que Rappi maneja internamente. Si deseas agregar una nueva tienda, primero comunícate con tu gerente de cuenta, para manejar todas las disposiciones internas para permitir que la nueva tienda se incluya en nuestra aplicación.

id

required string
  • El id único de cada producto, usualmente el identificador de SKU.
  • Gestionado internamente por los comerciantes.
  • Es posible que nuestro motor de ingestión de datos ignore los ID que no se hayan incluido previamente en su catálogo principal (siempre comunícate con tu gerente de cuentas para agregar nuevos productos a tu catálogo principal).

ean

required string
  • El EAN (o UPC) de un producto; comúnmente conocido como el código de barras del producto.
  • La columna ean se puede ser usada para crear un ID de producto único para paquetes de SKU individual, usando el formato <ean> _ <quantity> (en esos casos, debes pasar un id (ID de producto) diferente para el paquete, no el SKU original).

El siguiente ejemplo ilustra un escenario de paquete:

ideanprice
ideanprice
hwtz78960097604336.99
hwtz_3789600976043318.88

name

required string
  • El nombre del producto.

sale_type

required string
 valores aceptados: U | WW
  • Esta columna indica cómo el producto es vendido.
  • Utiliza "U" para los productos vendidos por unidades o "WW" para los vendidos por peso en kilogramos (Kg).

stock

required integer
  • La cantidad de producto disponible para la venta.

price

required number
  • El precio regular de un producto.
  • Hay una columna opcional para pasar precios temporalmente rebajados.

Descuentos

Tres columnas controlan los descuentos (rebajas). Si desea rebajar un producto, entonces se deben completar las tres columnas (es decir, son obligatorias).

discount_price

number
  • Este es el precio de venta temporal del producto.

discount_start_at

string, format: date
  • Esta es la fecha de inicio del descuento; utilice siempre el formato de fecha ISO 8601 AAAA-MM-DD

discount_end_at

string, format: date
  • Esta es la fecha de finalización del descuento. Se aplica la misma convención para el formato de cadena de fecha.

Optional columns

is_available

boolean
 valores aceptados: T (verdedero) | F (falso)
  • Este interruptor indica si el producto debe publicarse en la aplicación independientemente de sus existencias.

Rappi usa is_available dentro de sus propios sistemas. Rappi lo completa de acuerdo con un conjunto de reglas que incluyen factores como el recuento de existencias proporcionado en la columna stock.

Rappi puede aplicar un nivel de seguridad de existencias para reducir el riesgo de desabastecimiento, por ejemplo, el stock actual de una marca de pasta de dientes es de 3 unidades, pero se ha asignado un nivel de seguridad de existencias de 5 a esa tienda. Este SKU puede mostrarse en la aplicación con una advertencia de existencias agotadas o bajas.

El nivel de seguridad de existencias es un factor con el que se puede llegar a un acuerdo con tu TAM. Es posible que los comerciantes más grandes con mecanismos sofisticados de control de existencias no requieran dicha configuración. También se adopta un enfoque conservador de estimación de existencias durante las promociones.


category_first_level

string
  • Esta es la categoría principal para listar el producto.

category_second_level

string
  • Esta es la categoría secundaria para listar el producto

image_url

string
  • Una URL públicamente accesisble de una imagen de producto.