DAB · api v1

API de DAB

Para conectar el sistema del restaurante o de la empresa —su TPV, su ERP, su gestoría— con DAB. Todo en JSON sobre HTTPS, con una clave por cliente.

Lo primero

La dirección base es https://api.delamotech.es/v1. Cada petición lleva su clave en la cabecera:

curl https://api.delamotech.es/v1/ping \
  -H "Authorization: Bearer dab_live_…"

La respuesta dice de quién es la clave y qué se puede pedir con ella. Empieza siempre por ahí: si ping contesta, el resto va a funcionar.

El cliente nunca va en la URL

Sale de la clave. No hay ningún parámetro para elegir restaurante: una clave solo puede ver y tocar los datos de su cuenta, y no hay forma de pedir los de otra.

Qué se puede pedir con cada clave

La clave no tiene permisos propios: hereda los módulos que ese cliente tiene contratados. Si algo no está contratado, la respuesta es un 403 con el motivo escrito.

ÁreaCuándo está disponible
CartaCuentas de restaurante
ComandasRestaurantes con el módulo de comandas
GastosCualquier cuenta con el módulo de Costes

Carta

GET/v1/carta Toda la carta: platos, categoría, precio, alérgenos, formatos y si se vende.
GET/v1/carta/platos/{id} Un plato suelto. En vez de nuestro id podéis usar el vuestro: /v1/carta/platos/ref:CROQ-JAM.
PUT/v1/carta/platos/{id} Cambiar precio, disponible, stock o ref_externa. Manda solo lo que quieras cambiar. Admite ref: igual que el GET.
POST/v1/carta/referencias Emparejar toda la carta de una vez con vuestros códigos. O entra todo o no entra nada.
curl -X PUT https://api.delamotech.es/v1/carta/platos/42 \
  -H "Authorization: Bearer dab_live_…" \
  -H "Content-Type: application/json" \
  -d '{"precio": 13.50, "disponible": true}'

Dos campos que se confunden. disponible es si el plato está en la carta; stock son las raciones que quedan hoy (0 = agotado hoy, null = sin control). El stock se borra solo mañana; disponible, no.

Trabajar con vuestros códigos, no con los nuestros

Lo primero que conviene hacer es emparejar las dos cartas una sola vez. Bajáis /v1/carta, decidís qué plato vuestro es cada uno y lo mandáis todo junto:

curl -X POST https://api.delamotech.es/v1/carta/referencias \
  -H "Authorization: Bearer dab_live_…" \
  -H "Content-Type: application/json" \
  -d '{"referencias":[{"plato_id":39,"ref":"CROQ-JAM"},
                      {"plato_id":41,"ref":"ARR-SEN"}]}'

A partir de ahí ya no necesitáis nuestros identificadores para nada: se pide y se cambia cada plato por el vuestro.

curl -X PUT https://api.delamotech.es/v1/carta/platos/ref:CROQ-JAM \
  -H "Authorization: Bearer dab_live_…" \
  -H "Content-Type: application/json" \
  -d '{"precio": 13.50}'

Cada referencia tiene que ser única dentro de la cuenta; si se repite, la respuesta es un 409 y no se guarda nada. Con "ref": null se deshace el emparejamiento de un plato.

Comandas

GET/v1/comandas Con desde (fecha ISO), estado y limite. Trae las líneas de cada comanda.
curl "https://api.delamotech.es/v1/comandas?desde=2026-08-10T00:00:00Z&limite=50" \
  -H "Authorization: Bearer dab_live_…"

Gastos

GET/v1/gastos/documentos Albaranes y facturas. Filtros: desde, hasta, estado, limite.
GET/v1/gastos/documentos/{id} Con todas sus líneas: producto, cantidad, unidad, precio e importe.
GET/v1/gastos/proveedores Proveedores con lo que llevan facturado y la fecha del último papel.
GET/v1/gastos/precios El precio de hoy de cada producto y de qué albarán sale.

Fiaos solo de «confirmado»

Un documento en pendiente_revision lo ha leído la IA pero todavía no lo ha dado por bueno una persona. Para contabilidad, filtrad por estado=confirmado.

Errores, límites y versiones

Los errores siempre tienen la misma forma:

{ "error": { "codigo": "sin_modulo",
             "mensaje": "Esta cuenta no tiene el módulo de Costes contratado." } }
CódigoQué ha pasado
401 clave_invalidaFalta la clave, está mal escrita o ha sido revocada.
403 sin_moduloLa clave es buena, pero esa cuenta no tiene ese módulo.
404 no_encontradoEse id no existe en esta cuenta.
400 datos_invalidosLo que has mandado no vale; el mensaje dice por qué.
429 demasiadas_peticionesMás de 60 por minuto. Espera lo que diga Retry-After.

Lo que esta API no hace

No emite facturas, no cobra y no toca nada de Verifactu. DAB alimenta vuestro sistema; la facturación sigue siendo vuestra.