Developer
Test ModeTest Mode Sign In Get started
DeveloperDeveloper / ChangelogChangelog

ChangelogChangelog

Alle Änderungen an der BEEP! API, chronologisch.All changes to the BEEP! API in chronological order. Breaking Changes werden mindestens 30 Tage vorab angekündigt.

All changes to the BEEP! API, in chronological order. Breaking changes announced at least 30 days in advance.

Legende:Legend: Feature / Portal ReleaseFeature / Portal Release Bugfix / PatchBugfix / Patch

v1.7.0, 16. März 2026

Feature ReleaseFeature Release

Produktsicherung / Security Tags (GROW)Security Tags / EAS Integration (GROW)

  • Neues Store-Feld securityTagMode: "none" (default) | "manual" | "station" | "rfid". Aktiviert den passenden Deaktivierungsablauf für Scan & Go Kunden.New store field securityTagMode: "none" (default) | "manual" | "station" | "rfid". Enables the appropriate deactivation flow for Scan & Go customers.
  • Neues Store-Feld securityTagHint (string, optional): Freitext-Kundenhinweis, der im Warenkorb, Checkout und auf dem Kassenbon angezeigt wird.New store field securityTagHint (string, optional): Custom hint text displayed to customers in the cart, checkout, and on the receipt.
  • Unterstützte Branchen: Mode, Drogerie, Supermärkte, Elektronik, Baumärkte, Sport.Supported segments: fashion, drugstores, supermarkets, electronics, hardware, sports.

Neuer EndpointNew Endpoint

  • POST /verifySecurityTagDeactivation (GROW): Prüft ob ein Kauf bezahlt wurde und gibt die Deaktivierung frei. Für den station-Modus.(GROW): Checks whether a purchase has been paid and authorizes deactivation. For station mode.

Neues Webhook-EventNew Webhook Event

  • securityTag.deactivated (GROW): Wird ausgelöst wenn Produktsicherungen erfolgreich deaktiviert wurden.(GROW): Fired when security tags have been successfully deactivated.
  • checkout.completed Payload enthält jetzt securityTagMode und securityTagStatus wenn Sicherungen konfiguriert sind.checkout.completed payload now includes securityTagMode and securityTagStatus when security tags are configured.

SDK-ErweiterungenSDK Expansions

  • Node.js: scanAndGo.verifySecurityTagDeactivation(data)
  • Python: scan_and_go.verify_security_tag_deactivation(**data)
  • Dart: scanAndGo.verifySecurityTagDeactivation(data)
Kein API-Breaking-Change.No API breaking change. Alle neuen Felder sind optional und additiv. Stores ohne securityTagMode verwenden den Default "none" und verhalten sich identisch wie bisher.All new fields are optional and additive. Stores without securityTagMode default to "none" and behave identically to before.

v1.6.0, 11. März 2026

Feature ReleaseFeature Release

Product Nutrition Data (Auto-Enrichment)Product Nutrition Data (Auto-Enrichment)

  • Produkte im Katalog werden jetzt automatisch mit Nährwertdaten angereichert (EU-Verordnung 1169/2011: Kalorien, Fett, Kohlenhydrate, Protein, Salz, Ballaststoffe, Nutri-Score).Products in the catalog are now automatically enriched with nutrition data (EU Regulation 1169/2011: calories, fat, carbohydrates, protein, salt, fiber, Nutri-Score).
  • Daten werden aus offiziellen Referenzdatenbanken und der Open Food Facts Community-Datenbank konsolidiert. Ein Trust-Scoring-Algorithmus gewichtet mehrere Quellen und berechnet einen confidence-Wert (0–1).Data is consolidated from official reference databases and the Open Food Facts community database. A trust-scoring algorithm weighs multiple sources and computes a confidence value (0–1).
  • Neues Feld nutrition.source auf dem Product-Schema: merchant (vom Händler), reference (offizielle Datenbank), community (Open Food Facts).New field nutrition.source on the Product schema: merchant (from merchant), reference (official database), community (Open Food Facts).
  • Neues Feld nutrition.confidence: Vertrauenswert 0–1 für die konsolidierten Daten.New field nutrition.confidence: trust score 0–1 for consolidated data.

BEEP! App: Health Check in EinkaufslistenBEEP! App: Health Check in Shopping Lists

  • Neuer Health Check Toggle in Einkaufslisten: Nutzer können Nährwertdaten für alle Produkte in der Liste einsehen (opt-in, Standard: aus).New Health Check toggle in shopping lists: users can view nutrition data for all products in the list (opt-in, default: off).
  • Nährwert-Zusammenfassung am Listenkopf: Gesamtkalorien, Makronährstoffe, Abdeckungsquote.Nutrition summary in the list header: total calories, macronutrients, coverage ratio.
  • Kompakte kcal-Badges pro Produkt mit Detail-Bottom-Sheet bei Tap.Compact kcal badges per product with detail bottom sheet on tap.

OpenAPI SpecOpenAPI Spec

  • openapi.yaml: Product.nutrition Schema erweitert um source (enum: merchant/reference/community) und confidence (number, 0–1).Product.nutrition schema extended with source (enum: merchant/reference/community) and confidence (number, 0–1).
Kein API-Breaking-Change.No API breaking change. Das bestehende nutrition-Objekt im Product-Schema bleibt unverändert. Die neuen Felder source und confidence sind additiv. Produkte ohne verfügbare Referenzdaten haben weiterhin kein nutrition-Objekt.The existing nutrition object in the Product schema remains unchanged. The new fields source and confidence are additive. Products without available reference data continue to have no nutrition object.

v1.5.0, 9. März 2026

Feature ReleaseFeature Release

4 neue Loyalty API Endpoints4 New Loyalty API Endpoints

  • POST /updateLoyaltyProgram (GO+): Bestehende Loyalty-Programme aktualisieren. Atomic Batch-Update in Store-Subcollection und Top-Level-Collection gleichzeitig.(GO+): Update an existing loyalty program. Atomic batch update across store sub-collection and top-level collection simultaneously.
  • GET /getLoyaltyProgram (GO+): Einzelnes Loyalty-Programm per ID abrufen.(GO+): Retrieve a single loyalty program by ID.
  • POST /getLoyaltyAnalytics (GO+): Aggregierte Analytics für ein Loyalty-Programm: Mitglieder, ausgegebene Punkte, Einlösungen, monatliche Statistiken und Einlösungsrate.(GO+): Aggregated analytics for a loyalty program: members, points issued, redemptions, monthly stats and redemption rate.
  • POST /getLoyaltyWebhookEvents (GROW+): Webhook-Endpoints registrieren (POST) oder auflisten (GET). Unterstützt HMAC-Secret für sichere Payload-Verifikation. Duplikat-URLs werden automatisch aktualisiert statt neu angelegt.(GROW+): Register (POST) or list (GET) webhook endpoints. Supports HMAC secret for secure payload verification. Duplicate URLs are updated rather than duplicated.

SDK-ErweiterungenSDK Expansions

  • Node.js SDK: loyalty.listPrograms(storeId) und loyalty.registerWebhook(data) hinzugefügt. TypeScript-Definitionen (types.d.ts) vollständig synchronisiert.
  • Python SDK: loyalty.list_programs(store_id) hinzugefügt.
  • Dart SDK: loyalty.listPrograms(storeId) hinzugefügt.

PerformancePerformance

  • getLoyaltyAnalytics: Performance-Optimierung für monatliche Auswertungen. Response-Zeiten bei großen Transaktionsvolumen deutlich verbessert.Performance improvement for monthly analytics queries. Response times significantly reduced for high transaction volumes.

Portal-KorrekturenPortal Fixes

  • authentication.html: GO-Tier listet jetzt alle 9 Loyalty-Endpoints korrekt auf (vorher nur 4). GROW-Tier: getLoyaltyWebhookEvents ergänzt.GO tier now correctly lists all 9 loyalty endpoints (previously only 4). GROW tier: added getLoyaltyWebhookEvents.
  • openapi.yaml: GET /getLoyaltyPrograms und POST /getLoyaltyWebhookEvents hinzugefügt.GET /getLoyaltyPrograms and POST /getLoyaltyWebhookEvents added.
  • loyalty-api.html: Neue Sektionen für updateLoyaltyProgram, getLoyaltyProgram und getLoyaltyPrograms.New sections for updateLoyaltyProgram, getLoyaltyProgram and getLoyaltyPrograms.
Kein API-Breaking-Change.No API breaking change. Alle neuen Endpoints sind additiv. Bestehende Integrationen sind nicht betroffen.All new endpoints are additive. Existing integrations are not affected.

v1.4.2, 5. März 2026

Portal UpdatePortal Update

Developer Dashboard: Production PolishDeveloper Dashboard: Production Polish

  • Auth-Screen: BEEP!-Logo, Ambient-GlowAuth screen: BEEP! logo, ambient glow
  • Stat-Karten: Lucide-Icons, konsistentes SpacingStat cards: Lucide icons, consistent spacing
  • 4 Quick-Action-Karten in der Übersicht (Sandbox, Quickstart, API Reference, Status)4 quick-action cards in overview (Sandbox, Quickstart, API Reference, Status)
  • Event-Log: Leerer-Zustand-KomponenteEvent log: empty-state component
  • Sandbox: Mode-Indicator-Pill (Demo/Connected), HTTP-Method-Badges auf Tabs, Response Empty StateSandbox: mode indicator pill (Demo/Connected), HTTP method badges on tabs, response empty state

Portal Hintergrund: Dot GridPortal Background: Dot Grid

  • Farbiges Orb-System ersetzt durch subtiles 32px Dot-Grid (weisse Punkte, elliptische Maske)Coloured orb system replaced with subtle 32 px dot grid (white dots, elliptical mask)
  • Dezenter BEEP!-Purple-Glow oben zentriert, fadet beim Scrollen ausSubtle BEEP! purple glow centred at top, fades on scroll
  • Kein Animation-Loop: passiver Scroll-Listener statt requestAnimationFrameNo animation loop: passive scroll listener replaces requestAnimationFrame
Kein API-Breaking-Change.No API breaking change. Reine UI-Anpassungen am Developer Portal.Pure UI changes to the Developer Portal.

v1.4.1, 5. März 2026

Developer ToolsDeveloper Tools

Postman CollectionPostman Collection

  • Neue offizielle Postman Collection mit 35 Endpoints in 8 Ordnern (Stores, Catalog, Offers, Click & Collect, Scan & Go, Loyalty, Integrations, Analytics)New official Postman Collection with 35 endpoints in 8 folders (Stores, Catalog, Offers, Click & Collect, Scan & Go, Loyalty, Integrations, Analytics)
  • Download-Karte auf der Portal Landing Page verfügbarDownload card available on the portal landing page

SDK Install-CommandsSDK Install Commands

  • Node.js: npm install @beep_technologies/node
  • Python: pip install beep-sdk
  • Dart/Flutter: dart pub add beep_sdk
Kein API-Breaking-Change.No API breaking change. Neue Werkzeuge, keine API-Änderungen.New tooling, no API changes.

v1.4.0, 3. März 2026

Feature ReleaseFeature Release

Loyalty Earning Methods (GO+)Loyalty Earning Methods (GO+)

  • Neues Feld earningMethods auf LoyaltyProgram: Array mit bis zu 4 Methoden: qr_checkin, store_checkin, scan_and_go, click_collectNew earningMethods field on LoyaltyProgram: array with up to 4 methods: qr_checkin, store_checkin, scan_and_go, click_collect
  • QR-Code Check-in (GO+): Kunden scannen einen QR-Code am Kassenbereich. Format: beep://loyalty/{storeId}/{programId}. QR wird im BEEP! Merchant Dashboard generiert. Rate-Limit: 1× pro Stunde.QR Code Check-in (GO+): Customers scan a QR code at the checkout counter. Format: beep://loyalty/{storeId}/{programId}. QR is generated in the BEEP! Merchant Dashboard. Rate limit: 1× per hour.
  • Store Check-in (GO+): GPS-basierter Check-in im Geschäft. Rate-Limit: 1× pro Tag. Auto-Enrollment bei erstem Check-in.Store Check-in (GO+): GPS-based check-in at the store. Rate limit: 1× per day. Auto-enrollment on first check-in.
  • Click & Collect (GO+): Automatische Punkte/Stempel bei Abholbestätigung. Punkteberechnung basiert auf Bestellwert.Click & Collect (GO+): Automatic points/stamps on pickup confirmation. Points calculated based on order total.
  • Scan & Go (GROW+): Automatisch beim Checkout, unverändert, jetzt als explizite Earning Method konfigurierbar.Scan & Go (GROW+): Automatic on checkout, unchanged, now explicitly configurable as earning method.

Neue Webhook-EventsNew Webhook Events

  • loyalty.qr_earned (GO): Punkte via QR-Code vergeben(GO): Points earned via QR code
  • loyalty.checkin_earned (GO): Punkte via Store Check-in vergeben(GO): Points earned via store check-in
  • loyalty.points_earned enthält jetzt source-Feld (qr_checkin / store_checkin / scan_and_go / click_collect)now includes source field (qr_checkin / store_checkin / scan_and_go / click_collect)

BEEP! AppBEEP! App

  • Home-CTA umbenannt: “Scan & Go” → “Store Check-in” (Dual-Purpose: Scan & Go + Treue-Check-in)Home CTA renamed: "Scan & Go" → "Store Check-in" (dual purpose: Scan & Go + loyalty check-in)
  • Loyalty-Karten-Aktionen: QR scannen, Check-in, Einlösen, AustretenLoyalty card actions: QR scan, check-in, redeem, leave
  • Neuer Fullscreen Loyalty QR-Scanner mit Erfolgs-/Fehler-OverlaysNew fullscreen loyalty QR scanner with success/error overlays
Kein API-Breaking-Change. earningMethods hat den Default ["scan_and_go"] für Abwärtskompatibilität. Bestehende Programme ohne dieses Feld verhalten sich identisch.No API breaking change. earningMethods defaults to ["scan_and_go"] for backward compatibility. Existing programs without this field behave identically.

v1.3.1, 3. März 2026

BugfixBugfix

updateOffer: Filial-Synchronisation verbessertStore sync improved

  • Stores hinzufügen: Das Übergeben eines erweiterten storeIds[]-Arrays erstellt jetzt korrekt neue Firestore-Dokumente für neue Filialen (mit lokalen Geodaten). Bisher wurden hinzugefügte Stores ignoriert.Adding stores: Passing an expanded storeIds[] array now correctly creates new Firestore documents for new stores (with local geo-data). Previously, added stores were silently ignored.
  • Stores entfernen: Aus storeIds[] entfernte Filialen werden jetzt korrekt mit isActive: false deaktiviert und verschwinden aus der Consumer-App. Bisher wurden entfernte Stores nicht deaktiviert.Removing stores: Stores removed from storeIds[] are now correctly deactivated with isActive: false and removed from the consumer app. Previously, removed stores remained active.
  • storeIds in Propagation: Das storeIds[]-Array wird jetzt auch auf alle Geschwister-Dokumente propagiert. Bisher enthielten Geschwister nach einem Update noch die veraltete Store-Liste.storeIds propagation: The storeIds[] array is now also propagated to all sibling documents. Previously, siblings still held the outdated store list after an update.
  • Response enthält jetzt addedStores und removedStores Felder.Response now includes addedStores and removedStores fields.
Kein Breaking Change. Bestehende updateOffer-Calls ohne storeIds verhalten sich identisch wie zuvor.No breaking change. Existing updateOffer calls without storeIds behave identically to before.

v1.3.0, 2. März 2026

Enterprise ReleaseEnterprise Release

Offizielle SDKs veröffentlichtOfficial SDKs Released

  • Node.js (@beep_technologies/node): Zero dependencies, TypeScript-Definitionen, 8 Resource-Module, 35+ Methoden
  • Python (beep-sdk): Zero dependencies (stdlib), Pythonic snake_case API, vollständige Fehlerklassen
  • Dart/Flutter (beep_sdk): http Package, 8 Resource-Module mit typed responses

Firmenbasierte RegistrierungCompany-Based Registration

  • Pflicht-Firmenname + optionale Rolle bei der RegistrierungMandatory company name + optional role at signup
  • Neue Accounts starten mit Status pending bis zur Admin-FreigabeNew accounts start with pending status until admin approval

Neue Seiten & SpecsNew Pages & Specs

  • API Status Page: Echtzeit-Komponentenstatus, 90-Tage-Uptime, AntwortzeitenReal-time component status, 90-day uptime, response times
  • OpenAPI 3.0.3 Spec: Vollständige Spec für Client-Code-GenerierungFull spec for client code generation

Dashboard-VerbesserungenDashboard Improvements

  • Test ↔ Live Mode Toggle im Header Test ↔ Live mode toggle in header
  • Stats-Karten zeigen jetzt dynamische Werte statt StricheStats cards now show dynamic values instead of dashes
  • Secret Key: Copy + Reveal/Hide Buttons konsistentSecret key: consistent Copy + Reveal/Hide buttons
  • Tablet-Responsive (1024px): Sidebar kollabiert, Stats 2-spaltigTablet-responsive (1024px): sidebar collapses, stats 2-column
  • Login-Link HTML-Bug behoben, noindex Meta-Tag hinzugefügtLogin link HTML bug fixed, noindex meta tag added
Kein API-Breaking-Change. Alle Änderungen betreffen Portal-Frontend, Dashboard-UX und neue Downloads. Bestehende API-Integrationen sind nicht betroffen.No API breaking change. All changes affect portal frontend, dashboard UX, and new downloads. Existing API integrations are not affected.

v1.2.2, 2. März 2026

Neue Webhook-EventsNew Webhook Events

9 neue Webhook-Events dokumentiert9 New Webhook Events Documented

Die folgenden Events waren bereits im API-Gateway implementiert, aber noch nicht in der Webhook-Dokumentation aufgeführt. Sie werden ab sofort unter Webhooks mit vollständigen Payload-Beispielen dokumentiert.

The following events were already implemented in the API gateway but not yet listed in the webhook docs. They are now documented in Webhooks with full payload examples.

  • product.created (DISCOVER): Neues Produkt via insertProduct angelegtproduct.created (DISCOVER): New product created via insertProduct
  • product.bulk_imported (DISCOVER): Bulk-Import via bulkImportProducts abgeschlossenproduct.bulk_imported (DISCOVER): Bulk import via bulkImportProducts completed
  • integration.pos.synced (GROW): POS-Sync via syncPOS abgeschlossenintegration.pos.synced (GROW): POS sync via syncPOS completed
  • integration.pos.pushed (GROW): Daten via pushToPOS ins POS-System geschriebenintegration.pos.pushed (GROW): Data written to POS via pushToPOS
  • integration.erp.synced (GROW): ERP-Sync via syncERP abgeschlossenintegration.erp.synced (GROW): ERP sync via syncERP completed
  • integration.erp.pushed (GROW): Daten via pushToERP ins ERP-System geschriebenintegration.erp.pushed (GROW): Data written to ERP via pushToERP
  • integration.psp.configured (GROW): PSP via configurePSP konfiguriertintegration.psp.configured (GROW): PSP configured via configurePSP
  • payment.created (GROW): Zahlung via processPayment initiiertpayment.created (GROW): Payment initiated via processPayment
  • payment.refunded (GROW): Erstattung via refundPayment initiiertpayment.refunded (GROW): Refund initiated via refundPayment
Kein API-Breaking-Change. Die Events wurden lediglich zur Dokumentation hinzugefügt. Bestehende Webhook-Endpoints empfangen diese Events ohne Änderungen, sofern sie im Dashboard für die jeweiligen Event-Typen abonniert werden.No API breaking change. These events were documentation additions only. Existing webhook endpoints will receive them without any changes once subscribed to the respective event types in the Dashboard.

KorrekturenFixes

  • clickcollect.order und clickcollect.picked_up: Event-Tier-Badge von GROW auf GO korrigiert (war im Webhook-Payload-Abschnitt falsch, die Übersichtstabelle war bereits korrekt)clickcollect.order and clickcollect.picked_up: Event tier badge corrected from GROW to GO (was wrong in the payload section; the overview table was already correct)

v1.2.1, 2. März 2026

C&C PreiseC&C Pricing

Store-spezifische Produktpreise (Click & Collect)Store-Specific Product Prices (Click & Collect)

  • createProduct: Beim Erstellen eines neuen Produkts werden price und oldPrice jetzt sowohl im globalen Produktkatalog als auch store-spezifisch gespeichertcreateProduct: When creating a new product, price and oldPrice are now stored both in the global product catalog and store-specifically
  • Store-Preise überschreiben beim Laden automatisch die globalen Produktpreise (fetchStoreProducts verwendet Spread-Reihenfolge: global → store-spezifisch)Store prices automatically override global product prices when loading (fetchStoreProducts uses spread order: global → store-specific)
  • C&C Produktpicker in der BEEP!-App zeigt jetzt oldPrice als durchgestrichenen Preis neben dem Aktionspreis, wenn oldPrice > priceC&C product picker in the BEEP! app now displays oldPrice as a crossed-out price next to the current price when oldPrice > price
  • Neues optionales Feld oldPrice im Produkt-Datenformat dokumentiertNew optional field oldPrice documented in the product data format
Kein API-Breaking-Change. oldPrice ist ein optionales Feld. Bestehende Integrationen, die price ohne oldPrice senden, funktionieren unverändert.No API breaking change. oldPrice is an optional field. Existing integrations sending price without oldPrice continue to work unchanged.

v1.2.0, 2. März 2026

Backend-VerbesserungenBackend Improvements

Produkt-Suche & AutocompleteProduct Search & Autocomplete

  • Produkt-Autocomplete in der Händler-App sucht jetzt über den gesamten Produktkatalog; zuvor wurden nur die ersten ~500 Dokumente durchsuchtProduct autocomplete in the Merchant App now searches across the full product catalogue; previously only the first ~500 documents were scanned
  • Umstellung auf Firestore Range-Queries (nameLower >= query / brandLower >= query / tags array-contains) mit Composite Indexes, keine dokumentenanzahlbezogene Obergrenze mehrSwitched to Firestore range queries (nameLower >= query / brandLower >= query / tags array-contains) with composite indexes, no longer limited by document count
  • Alle bestehenden Produktdokumente wurden mit nameLower und brandLower (automatische System-Felder) befüllt, keine Aktion seitens der Händler erforderlichAll existing product documents backfilled with nameLower and brandLower (automatic system fields), no action required from merchants
  • insertProduct und bulkImportProducts: Neue Produkte werden automatisch mit den Suchfeldern angelegtinsertProduct and bulkImportProducts: New products are automatically created with the search index fields
Kein API-Breaking-Change. Die neuen Felder sind reine System-Felder und werden von BEEP! automatisch gesetzt. Bestehende Integrationen müssen nichts ändern.No API breaking change. The new fields are purely system fields set automatically by BEEP!. Existing integrations require no changes.

Multi-Filial-Angebote (createOffer)Multi-Store Offers (createOffer)

  • createOffer: Parameter storeId (singular) ersetzt durch storeIds: string[], ermöglicht Erstellung eines Angebots für beliebig viele Filialen in einem CallcreateOffer: Parameter storeId (singular) replaced by storeIds: string[], enables creating an offer for any number of branches in a single call
  • Das Backend erstellt jetzt pro Filiale ein eigenes Firestore-Dokument mit den lokalen Geodaten der Filiale, sodass Kunden in der Consumer-App filialspezifische Angebote in ihrer Nähe sehenThe backend now creates a dedicated Firestore document per store with that store's local geo-data, so consumers in the app see branch-specific offers near them
  • Alle Filial-Kopien werden über ein neues groupId-Feld verknüpft. Response enthält jetzt groupId, offerIds[] und storeCountAll branch copies are linked via a new groupId field. Response now includes groupId, offerIds[] and storeCount
  • updateOffer: Änderungen an Titel, Produkten, Datum, Farbe und Tags werden automatisch auf alle Filial-Kopien derselben groupId propagiertupdateOffer: Changes to title, products, dates, colour and tags are automatically propagated to all branch copies sharing the same groupId
  • deleteOffer: Löscht automatisch alle Filial-Kopien einer GruppedeleteOffer: Automatically deletes all branch copies of a group
  • getManagerOffers: Gibt Multi-Store-Angebote dedupliziert zurück (eine Zeile pro Gruppe mit groupId), kein Parameter storeId mehr nötiggetManagerOffers: Returns multi-store offers deduplicated (one row per group with groupId), no storeId parameter needed anymore
  • cloneOffer dokumentiert: Vorhandenes Angebot auf weitere Filialen duplizieren, optional mit filialspezifischen Preisanpassungen (priceAdjustments)cloneOffer documented: Duplicate an existing offer to additional branches, optionally with per-store price adjustments (priceAdjustments)
  • Angebotsparameter überarbeitet: originalPrice/discountPrice ersetzt durch products[] Array mit vollem Produkt-Schema (Name, Preise, Kategorie, Hersteller, Einheit)Offer parameters revised: originalPrice/discountPrice replaced by products[] array with full product schema (name, prices, category, manufacturer, unit)
Breaking Change für createOffer. Bestehende Integrationen die storeId (singular) oder originalPrice/discountPrice nutzen, müssen auf das neue Schema migrieren. Angebote die vor diesem Update erstellt wurden (kein groupId-Feld) funktionieren weiterhin, erscheinen aber nur in der Filiale deren Geodaten im Dokument gespeichert sind. Neu anlegen empfohlen.Breaking change for createOffer. Existing integrations using storeId (singular) or originalPrice/discountPrice must migrate to the new schema. Offers created before this update (no groupId field) continue to work but only appear in the store whose geo-data is stored in the document. Recreating them is recommended.

v1.1.0, 1. März 2026

Production-Readiness AuditProduction-Readiness Audit

Sandbox-Daten korrigiertSandbox Data Corrected

  • Sandbox-Stores auf 2 Stores korrigiert (vorher fälschlich 3 dokumentiert): sandbox_store_001 (Sandbox Lebensmittel GmbH, Berlin) und sandbox_store_002 (Test Getränke GmbH, München)Sandbox stores corrected to 2 stores (previously incorrectly documented as 3): sandbox_store_001 (Sandbox Lebensmittel GmbH, Berlin) and sandbox_store_002 (Test Getränke GmbH, Munich)
  • Sandbox-Produkte auf 3 Produkte korrigiert: Bio-Vollmilch 3,5% (€1,49), Schwarzbier 0,5l (€1,19), Butterbrezel (€0,89)Sandbox products corrected to 3 products: Bio-Vollmilch 3.5% (€1.49), Schwarzbier 0.5l (€1.19), Butterbrezel (€0.89)
  • Alle EANs, Preise und Produktnamen über alle Seiten hinweg synchronisiert (Quickstart, Sandbox, API Reference, Data Formats, Webhooks, Dashboard)All EANs, prices and product names synchronized across all pages (Quickstart, Sandbox, API Reference, Data Formats, Webhooks, Dashboard)

Architektur-KlarstellungenArchitecture Clarifications

  • Offers & Click & Collect: Klarstellung dass Angebots- und Click & Collect-Endpoints Firestore-basiert sind (direkte Firestore-Writes), nicht über den API Gateway geroutetOffers & Click & Collect: Clarified that offer and click & collect endpoints are Firestore-based (direct Firestore writes), not routed through the API Gateway
  • Scan & Go: Hinweis hinzugefügt dass checkIn, startCheckout, fetchPurchase, fetchPurchaseHistory im Gateway nur mit Test-Keys (Sandbox) funktionieren. Live-Modus nutzt Firebase SDK direktScan & Go: Added note that checkIn, startCheckout, fetchPurchase, fetchPurchaseHistory only work with test keys (sandbox) via the gateway. Live mode uses Firebase SDK directly
  • Standalone Cloud Functions: generateReceiptWithQR, getReceiptFromToken und generateCodes sind eigenständige CFs mit separater Base-URL (nicht über Gateway)Standalone Cloud Functions: generateReceiptWithQR, getReceiptFromToken and generateCodes are standalone CFs with separate base URL (not via gateway)
  • insertProduct: Klarstellung dass der Endpunkt JSON body erwartet (nicht multipart/form-data). Bild-Upload separat via uploadImageToProductinsertProduct: Clarified that the endpoint expects JSON body (not multipart/form-data). Image upload separately via uploadImageToProduct

FehlerkorrekturenBug Fixes

  • fetchPurchase und fetchPurchaseHistory: HTTP-Methode von GET → POST korrigiert (inkl. Pagination-Beispiel)fetchPurchase and fetchPurchaseHistory: HTTP method corrected from GET → POST (including pagination example)
  • startCheckout: Parameter destination von "required" auf "optional" korrigiertstartCheckout: Parameter destination corrected from "required" to "optional"
  • checkIn: Aus Stores-Sidebar entfernt und korrekt unter Scan & Go / GROW eingeordnetcheckIn: Removed from Stores sidebar, correctly placed under Scan & Go / GROW
  • Webhook-Events: clickcollect.status_changed (existierte nicht) ersetzt durch clickcollect.order und clickcollect.picked_upWebhook events: clickcollect.status_changed (did not exist) replaced with clickcollect.order and clickcollect.picked_up
  • Tier-Zuordnungen korrigiert: store.checkin → GROW, dm.received → GO (vorher DISCOVER), Click & Collect-Events → GO (vorher GROW)Tier assignments corrected: store.checkin → GROW, dm.received → GO (was DISCOVER), click & collect events → GO (was GROW)
  • DISCOVER-Berechtigungen in Authentication-Docs: Vollständige Liste aller 8 Endpoints hinzugefügtDISCOVER permissions in authentication docs: Added complete list of all 8 endpoints
  • Analytics Tier-Badge: "GO / GROW" → "GROW" korrigiertAnalytics tier badge: "GO / GROW" → "GROW" corrected
  • API-Key-Format in developer.js: Korrigiert auf 5-Segment-Format bk_{mode}_{variant}_{keyId}_{secret}API key format in developer.js: Corrected to 5-segment format bk_{mode}_{variant}_{keyId}_{secret}

Nicht-funktionale Endpoints dokumentiertNon-Functional Endpoints Documented

  • insertStore: Entfernt. Store-Registrierung erfolgt über submitStoreRegistrationRequestinsertStore: Removed, store registration via submitStoreRegistrationRequest
  • markPurchaseCancelled: Als "Coming Soon" markiertmarkPurchaseCancelled: Marked as "Coming Soon"
  • simulateWebhook: Als "Coming Soon" markiert (noch nicht im Backend implementiert)simulateWebhook: Marked as "Coming Soon" (not yet implemented in backend)

Betroffene DateienAffected Files

  • api-reference.html: 12 Fixes
  • quickstart.html: 6 Fixes
  • data-formats.html: 6 Fixes
  • webhooks.html: 5 Fixes
  • developer.js: 6 Fixes
  • sandbox.html: 6 Fixes
  • AI_GUIDE.md: 2 Fixes
  • dashboard.html: 1 Fix
  • offers-api.html, click-collect-api.html, scan-go-api.html, authentication.html, errors.html, changelog.html

v1.0.0, 27. Februar 2026

Initial Release

NeuNew

  • API Gateway: Einzelner HTTP-Endpoint (/api/v1/{action}) für alle API-Calls
  • API Key System: Publishable/Secret Key Paare mit SHA-256 Hash, Timing-Safe Comparison
  • 5 Pakete: DISCOVER, ASSIST, GO, GROW, PRIME mit abgestuften Endpoint-Berechtigungen
  • Sandbox-Modus: Mock-Responses für alle Gateway-Endpoints und Firestore-Integrationen (Test-Keys)
  • Rate Limiting: Firestore-backed Sliding Window (60 bis 2.000 req/min je Paket)
  • Developer Dashboard: Account-Erstellung, Key-Management, Nutzungsstatistiken

Endpoints

  • Stores: fetchStores, fetchStore
  • Produkte: fetchProducts, fetchProduct, insertProduct, registerProductToStore, bulkImportProducts
  • Scan & Go: checkIn, startCheckout, fetchPurchase, fetchPurchaseHistory
  • Angebote: createOffer, updateOffer, deleteOffer, getManagerOffers
  • Click & Collect: submitClickCollectOrder, updateClickCollectStatus
  • POS/ERP/PSP: syncPOS, pushToPOS, syncERP, pushToERP, configurePSP, processPayment, refundPayment
  • Analytics: exportSalesData, exportReceiptData
  • Webhooks: 11 Event-Typen mit HMAC-SHA256 Signatur-Verifikation

Sicherheit

  • Firestore Security Rules: Nur Backend-Zugriff auf Developer-Collections
  • CSP-Headers, HSTS, Permissions-Policy für Portal-Seiten
  • API-Keys werden nie im Klartext gespeichert (SHA-256)
  • Firestore TTL Policy für Rate-Limit-Dokumente
  • Firebase Browser API Key mit HTTP-Referrer-Restriction auf 6 Domains
Breaking Changes werden per E-Mail an alle Developer-Accounts angekündigt. Du kannst deine Benachrichtigungen im Dashboard konfigurieren.Breaking changes are announced via e-mail to all developer accounts. You can configure your notifications in the Dashboard.