Brigata ← brigata.app
API & Webhook · v1

API per sviluppatori

Integra Brigata con il tuo software: contabilità, BI di catena, prenotazioni sul tuo sito, automazioni. Commission-free, dati in UE.

Autenticazione

Ogni chiamata usa una chiave Bearer per-locale. La generi nell'app: Impostazioni → Integrazioni → Nuova chiave. La chiave (brg_…) si vede una sola volta e a riposo è conservata solo come hash SHA-256. Revocabile in qualsiasi momento.

Authorization: Bearer brg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL: https://brigata.app/api/v1 · Rate limit: 300 richieste/ora per chiave (HTTP 429 al superamento).

Scopi

Ogni chiave concede solo gli scopi che scegli. Una chiamata fuori scopo risponde 403.

menu:readprenotazioni:readprenotazioni:write vendite:readclienti:readfatture:readreport:read

Endpoint

MetodoPercorsoScopoDescrizione
GET/v1/menumenu:readSezioni e piatti visibili online (prezzo canale, allergeni).
GET/v1/prenotazioni?data=YYYY-MM-DDprenotazioni:readPrenotazioni del giorno.
POST/v1/prenotazioniprenotazioni:writeCrea una prenotazione (data, ora, coperti, cliente…).
GET/v1/vendite?da=&a=vendite:readSerie giornaliera e totali del periodo.
GET/v1/report?da=&a=report:readTotali, per categoria, metodi di pagamento, top piatti.
GET/v1/fatture?da=&a=fatture:readFatture emesse (numero, cliente, totale, stato).
GET/v1/clienticlienti:readAnagrafica clienti (ultimi 500 per visita).

Esempio

curl https://brigata.app/api/v1/report?da=2026-07-01&a=2026-07-31 \
  -H "Authorization: Bearer brg_xxxxxxxx…"

Webhook

Registra una o più destinazioni HTTPS (nell'app, sezione Integrazioni) e scegli gli eventi. Brigata invia un POST JSON a ogni evento; il retry orario riprova le consegne non riuscite.

Eventi

prenotazione.creatavendita.chiusaordine_online.nuovo ordine.statofattura.emessa

Firma

Ogni consegna porta l'header X-Brigata-Firma = HMAC-SHA256 (hex) del corpo grezzo col segreto della destinazione, più X-Brigata-Evento. Verifica così:

import crypto from "node:crypto";
function verifica(corpoGrezzo, firma, segreto){
  const atteso = crypto.createHmac("sha256", segreto).update(corpoGrezzo).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(atteso), Buffer.from(firma));
}

Corpo: { "evento": "…", "creato": 1720000000000, "dati": { … } }

Note