Artículo técnico

Integración de un Sistema Sin API Pública

Cómo las confirmaciones de pedidos de Grubhub y DoorDash se convirtieron en pedidos nativos de DinDin, sin ninguna API de pedidos a la vista.

Integración de un Sistema Sin API Pública ilustración
Artículo técnico

Cuando un sistema del que depende un producto no tiene API pública, la integración debe construirse contra la interfaz que sí expone, aun cuando esa interfaz haya sido diseñada para una persona y no para un programa. En DinDin, una suite de tecnología conectada para restaurantes, esa interfaz era una bandeja de entrada.

01

Cómo leer este trabajo

El problema: dos marketplaces, sin API de pedidos

Los restaurantes clientes de DinDin reciben pedidos desde varios canales —su propio sitio, su punto de venta y marketplaces de entrega de terceros— y cada uno de esos pedidos debe llegar a la misma impresora de cocina, al mismo reporte y al mismo flujo de trabajo operativo. Los pedidos de Grubhub y DoorDash eran el vacío: ninguno de los dos marketplaces exponía la API de pedidos que este flujo de trabajo necesitaba. Lo que cada marketplace sí envía, de forma confiable, es un correo HTML de confirmación de pedido a la propia bandeja de entrada del restaurante: el mismo correo que un gerente leería manualmente.

02

Cómo leer este trabajo

Construcción de la integración contra la bandeja de entrada

El pipeline se autentica en esa bandeja de entrada compartida y trata cada confirmación entrante como la superficie de integración: analiza el correo HTML de confirmación de pedido, identifica al comercio al que pertenece y extrae el pedido hacia el modelo nativo de pedidos de DinDin. A partir de ahí, resulta indistinguible de un pedido tomado en el propio sitio del restaurante: llega a la misma impresora de cocina y al mismo reporte. La API de Gmail es un punto de referencia razonable de cómo suele construirse una integración autenticada de bandeja de entrada como esta (ver: guías de la API de Gmail, citadas más abajo).

03

Cómo leer este trabajo

Deduplicación: la parte que permite volver a ejecutarlo de forma segura

Una integración basada en correo electrónico debe tolerar volver a ejecutarse: una conexión puede caerse a mitad de una descarga, o un mensaje puede reprocesarse. El pipeline elimina duplicados usando el propio número de pedido de cada marketplace, en lugar de derivar una identidad a partir de contenido de texto libre, de modo que reprocesar el mismo correo de confirmación nunca crea un segundo ticket de cocina. Esta es la misma disciplina de solicitudes idempotentes documentada en el diseño de API de pagos, donde se usa un identificador provisto por el cliente específicamente para que una solicitud reintentada no pueda cobrar ni crear dos veces (ver: documentación de solicitudes idempotentes de Stripe, citada más abajo).

04

Cómo leer este trabajo

A qué se generaliza esto

La lección general no es específica de los restaurantes ni del correo electrónico: cuando un sistema no expone una API, la integración se construye contra la interfaz más estable que sí expone —aunque esté pensada para una persona— y se vuelve segura de reejecutar con la misma disciplina de deduplicación que usaría una integración de API adecuada. Aquí la bandeja de entrada no es una solución alternativa; tratada con la disciplina correcta, es la integración.

Fuentes

Referencias

Evidencia

El caso de estudio detrás de este artículo

DínDín ilustración del proyecto

DínDín

Suite tecnológica completa para restaurantes que conecta pedidos en línea, POS, operaciones administrativas, pantallas de cocina, pantallas para clientes y pedidos de marketplaces.

Servicio relacionado

Integraciones Sin API y Migración de Datos Heredados →

Let's build what's next

Have a complex system that needs to be built right?

Whether you are starting from an idea, replacing an existing platform, or scaling a system, let's talk.

Better Technology.
Brighter Possibilities.