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 ReleaseProduktsicherung / 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 fieldsecurityTagMode:"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 fieldsecurityTagHint(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 denstation-Modus.(GROW): Checks whether a purchase has been paid and authorizes deactivation. Forstationmode.
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.completedPayload enthält jetztsecurityTagModeundsecurityTagStatuswenn Sicherungen konfiguriert sind.checkout.completedpayload now includessecurityTagModeandsecurityTagStatuswhen 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 ReleaseProduct 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 aconfidencevalue (0–1). - Neues Feld
nutrition.sourceauf dem Product-Schema:merchant(vom Händler),reference(offizielle Datenbank),community(Open Food Facts).New fieldnutrition.sourceon 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 fieldnutrition.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.nutritionSchema erweitert umsource(enum: merchant/reference/community) undconfidence(number, 0–1).Product.nutritionschema extended withsource(enum: merchant/reference/community) andconfidence(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 Release4 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)undloyalty.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:getLoyaltyWebhookEventsergänzt.GO tier now correctly lists all 9 loyalty endpoints (previously only 4). GROW tier: addedgetLoyaltyWebhookEvents.openapi.yaml:GET /getLoyaltyProgramsundPOST /getLoyaltyWebhookEventshinzugefügt.GET /getLoyaltyProgramsandPOST /getLoyaltyWebhookEventsadded.loyalty-api.html: Neue Sektionen fürupdateLoyaltyProgram,getLoyaltyProgramundgetLoyaltyPrograms.New sections forupdateLoyaltyProgram,getLoyaltyProgramandgetLoyaltyPrograms.
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 UpdateDeveloper 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 replacesrequestAnimationFrame
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 ToolsPostman 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 ReleaseLoyalty Earning Methods (GO+)Loyalty Earning Methods (GO+)
- Neues Feld
earningMethodsaufLoyaltyProgram: Array mit bis zu 4 Methoden:qr_checkin,store_checkin,scan_and_go,click_collectNewearningMethodsfield onLoyaltyProgram: 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 codeloyalty.checkin_earned(GO): Punkte via Store Check-in vergeben(GO): Points earned via store check-inloyalty.points_earnedenthält jetztsource-Feld (qr_checkin / store_checkin / scan_and_go / click_collect)now includessourcefield (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
BugfixBugfixupdateOffer: 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 expandedstoreIds[]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 mitisActive: falsedeaktiviert und verschwinden aus der Consumer-App. Bisher wurden entfernte Stores nicht deaktiviert.Removing stores: Stores removed fromstoreIds[]are now correctly deactivated withisActive: falseand removed from the consumer app. Previously, removed stores remained active. storeIdsin Propagation: DasstoreIds[]-Array wird jetzt auch auf alle Geschwister-Dokumente propagiert. Bisher enthielten Geschwister nach einem Update noch die veraltete Store-Liste.storeIdspropagation: ThestoreIds[]array is now also propagated to all sibling documents. Previously, siblings still held the outdated store list after an update.- Response enthält jetzt
addedStoresundremovedStoresFelder.Response now includesaddedStoresandremovedStoresfields.
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 ReleaseOffizielle 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):httpPackage, 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
pendingbis zur Admin-FreigabeNew accounts start withpendingstatus 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 Events9 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 viainsertProductangelegtproduct.created(DISCOVER): New product created viainsertProductproduct.bulk_imported(DISCOVER): Bulk-Import viabulkImportProductsabgeschlossenproduct.bulk_imported(DISCOVER): Bulk import viabulkImportProductscompletedintegration.pos.synced(GROW): POS-Sync viasyncPOSabgeschlossenintegration.pos.synced(GROW): POS sync viasyncPOScompletedintegration.pos.pushed(GROW): Daten viapushToPOSins POS-System geschriebenintegration.pos.pushed(GROW): Data written to POS viapushToPOSintegration.erp.synced(GROW): ERP-Sync viasyncERPabgeschlossenintegration.erp.synced(GROW): ERP sync viasyncERPcompletedintegration.erp.pushed(GROW): Daten viapushToERPins ERP-System geschriebenintegration.erp.pushed(GROW): Data written to ERP viapushToERPintegration.psp.configured(GROW): PSP viaconfigurePSPkonfiguriertintegration.psp.configured(GROW): PSP configured viaconfigurePSPpayment.created(GROW): Zahlung viaprocessPaymentinitiiertpayment.created(GROW): Payment initiated viaprocessPaymentpayment.refunded(GROW): Erstattung viarefundPaymentinitiiertpayment.refunded(GROW): Refund initiated viarefundPayment
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.orderundclickcollect.picked_up: Event-Tier-Badge von GROW auf GO korrigiert (war im Webhook-Payload-Abschnitt falsch, die Übersichtstabelle war bereits korrekt)clickcollect.orderandclickcollect.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 PricingStore-spezifische Produktpreise (Click & Collect)Store-Specific Product Prices (Click & Collect)
createProduct: Beim Erstellen eines neuen Produkts werdenpriceundoldPricejetzt sowohl im globalen Produktkatalog als auch store-spezifisch gespeichertcreateProduct: When creating a new product,priceandoldPriceare now stored both in the global product catalog and store-specifically- Store-Preise überschreiben beim Laden automatisch die globalen Produktpreise
(
fetchStoreProductsverwendet Spread-Reihenfolge: global → store-spezifisch)Store prices automatically override global product prices when loading (fetchStoreProductsuses spread order: global → store-specific) - C&C Produktpicker in der BEEP!-App zeigt jetzt
oldPriceals durchgestrichenen Preis neben dem Aktionspreis, wennoldPrice > priceC&C product picker in the BEEP! app now displaysoldPriceas a crossed-out price next to the current price whenoldPrice > price - Neues optionales Feld
oldPriceim Produkt-Datenformat dokumentiertNew optional fieldoldPricedocumented 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 ImprovementsProdukt-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
nameLowerundbrandLower(automatische System-Felder) befüllt, keine Aktion seitens der Händler erforderlichAll existing product documents backfilled withnameLowerandbrandLower(automatic system fields), no action required from merchants insertProductundbulkImportProducts: Neue Produkte werden automatisch mit den Suchfeldern angelegtinsertProductandbulkImportProducts: 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: ParameterstoreId(singular) ersetzt durchstoreIds: string[], ermöglicht Erstellung eines Angebots für beliebig viele Filialen in einem CallcreateOffer: ParameterstoreId(singular) replaced bystoreIds: 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 jetztgroupId,offerIds[]undstoreCountAll branch copies are linked via a newgroupIdfield. Response now includesgroupId,offerIds[]andstoreCount updateOffer: Änderungen an Titel, Produkten, Datum, Farbe und Tags werden automatisch auf alle Filial-Kopien derselbengroupIdpropagiertupdateOffer: Changes to title, products, dates, colour and tags are automatically propagated to all branch copies sharing the samegroupIddeleteOffer: Löscht automatisch alle Filial-Kopien einer GruppedeleteOffer: Automatically deletes all branch copies of a groupgetManagerOffers: Gibt Multi-Store-Angebote dedupliziert zurück (eine Zeile pro Gruppe mitgroupId), kein ParameterstoreIdmehr nötiggetManagerOffers: Returns multi-store offers deduplicated (one row per group withgroupId), nostoreIdparameter needed anymorecloneOfferdokumentiert: Vorhandenes Angebot auf weitere Filialen duplizieren, optional mit filialspezifischen Preisanpassungen (priceAdjustments)cloneOfferdocumented: Duplicate an existing offer to additional branches, optionally with per-store price adjustments (priceAdjustments)- Angebotsparameter überarbeitet:
originalPrice/discountPriceersetzt durchproducts[]Array mit vollem Produkt-Schema (Name, Preise, Kategorie, Hersteller, Einheit)Offer parameters revised:originalPrice/discountPricereplaced byproducts[]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 AuditSandbox-Daten korrigiertSandbox Data Corrected
- Sandbox-Stores auf 2 Stores korrigiert (vorher fälschlich 3
dokumentiert):
sandbox_store_001(Sandbox Lebensmittel GmbH, Berlin) undsandbox_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) andsandbox_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,fetchPurchaseHistoryim Gateway nur mit Test-Keys (Sandbox) funktionieren. Live-Modus nutzt Firebase SDK direktScan & Go: Added note thatcheckIn,startCheckout,fetchPurchase,fetchPurchaseHistoryonly work with test keys (sandbox) via the gateway. Live mode uses Firebase SDK directly - Standalone Cloud Functions:
generateReceiptWithQR,getReceiptFromTokenundgenerateCodessind eigenständige CFs mit separater Base-URL (nicht über Gateway)Standalone Cloud Functions:generateReceiptWithQR,getReceiptFromTokenandgenerateCodesare 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 viauploadImageToProduct
FehlerkorrekturenBug Fixes
fetchPurchaseundfetchPurchaseHistory: HTTP-Methode von GET → POST korrigiert (inkl. Pagination-Beispiel)fetchPurchaseandfetchPurchaseHistory: HTTP method corrected from GET → POST (including pagination example)startCheckout: Parameterdestinationvon "required" auf "optional" korrigiertstartCheckout: Parameterdestinationcorrected 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 durchclickcollect.orderundclickcollect.picked_upWebhook events:clickcollect.status_changed(did not exist) replaced withclickcollect.orderandclickcollect.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-Formatbk_{mode}_{variant}_{keyId}_{secret}API key format indeveloper.js: Corrected to 5-segment formatbk_{mode}_{variant}_{keyId}_{secret}
Nicht-funktionale Endpoints dokumentiertNon-Functional Endpoints Documented
insertStore: Entfernt. Store-Registrierung erfolgt übersubmitStoreRegistrationRequestinsertStore: Removed, store registration viasubmitStoreRegistrationRequestmarkPurchaseCancelled: 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 Fixesquickstart.html: 6 Fixesdata-formats.html: 6 Fixeswebhooks.html: 5 Fixesdeveloper.js: 6 Fixessandbox.html: 6 FixesAI_GUIDE.md: 2 Fixesdashboard.html: 1 Fixoffers-api.html,click-collect-api.html,scan-go-api.html,authentication.html,errors.html,changelog.html
v1.0.0, 27. Februar 2026
Initial ReleaseNeuNew
- 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