Skip to content

Changelog

Changelog

Επιλεγμένα highlights των τελευταίων εκδόσεων. Για τις πλήρεις εκδόσεις του API και την πολιτική διασπαστικών αλλαγών (Breaking-Change-Policy), ανατρέξτε στο Έκδοση API & Πολιτική LTS.

Λεπτομερείς αλλαγές σε μεμονωμένα endpoints: Προδιαγραφή OpenAPI και διαδραστική αναφορά API.


2026-08 · Keyset cursor πλέον σε όλα τα endpoints λιστών

  • Διόρθωση: Η διόρθωση του κέρσορα για τα GET /v1/codes και GET /v1/dpp (δείτε παρακάτω) έχει πλέον επεκταθεί σε όλες τις υπόλοιπες λίστες με σελιδοποίηση κέρσορα: GET /v1/qr-codes/:id/comments, /v1/workspaces, /v1/gs1/identifiers, /v1/members, /v1/audit-logs, /v1/admin/orgs, /v1/admin/users και /v1/webhooks/:id/deliveries. Όλες έκαναν σελιδοποίηση αποκλειστικά μέσω του created_at· σειρές με πανομοιότυπη χρονική σήμανση (καταγραφές ελέγχου μιας batch λειτουργίας, webhook retries, εισαγωγές μελών) θα μπορούσαν να χαθούν στην επόμενη σελίδα. Το κλειδί ταξινόμησης είναι πλέον παντού η πλειάδα (created_at, id).
  • Αλλαγή API: Σε αυτές τις λίστες, το meta.pagination.next_cursor είναι πλέον επίσης μια αδιαφανής τιμή (base64url) αντί για μια απλή χρονική σήμανση· μη αναγνώσιμοι κέρσορες επιστρέφουν 400, ενώ παλιοί κέρσορες χρονικής σήμανσης θα συνεχίσουν να γίνονται δεκτοί μεταβατικά. Εξαίρεση το GET /v1/webhooks/:id/deliveries: εκεί το next_cursor παραμένει το ID της τελευταίας παράδοσης (άγνωστο ID → πρώτη σελίδα). Οι clients που επιστρέφουν αμετάβλητο το next_cursor — Dashboard, CLI, SDKs, MCP — δεν χρειάζεται να αλλάξουν τίποτα.
  • Αντίκτυπος: Δεν απαιτείται μετανάστευση. Αν κάποιος παρατήρησε ότι έλειπαν εγγραφές κατά τη σελιδοποίηση σε μία από αυτές τις λίστες (π.χ. στο audit log ή στο log παραδόσεων στο Dashboard): Δεν είχαν χαθεί ποτέ — οι λίστες τις εμφανίζουν πλέον πλήρως.

2026-08 · Χρονικές σημάνσεις μετά από επεξεργασία και διαγραφή ξανά συμβατές με το OpenAPI

  • Διόρθωση: Μετά το PATCH /v1/codes/{id}, το updated_at επέστρεφε σε μορφή SQLite χωρίς ζώνη ώρας (2026-08-17 09:00:00), αν και η προδιαγραφή OpenAPI υπόσχεται format: date-time και η δημιουργία (POST) παρέχει τη χρονική σήμανση ISO (2026-08-17T09:00:00.000Z). Το ίδιο ίσχυε για τα deleted_at/updated_at κατά το soft-delete, καθώς και για τις διαδρομές επεξεργασίας/διαγραφής των API-Keys, οργανισμών, Workspaces, μελών, σχολίων και webhooks, επιπλέον για το last_used_at των API-Keys και το last_triggered_at των webhooks. Όλες οι διαδρομές εγγραφής καταγράφουν πλέον σε μορφή ISO 8601 (UTC, T και Z).
  • Αντίκτυπος: Οι clients που κάνουν parse το updated_at με new Date(...) (SDKs, CLI, Dashboard), διάβαζαν τη μορφή με το κενό διάστημα ως τοπική ώρα — το CLI εμφάνιζε την ώρα μετατοπισμένη κατά την τοπική διαφορά (offset) για κώδικες που είχαν υποστεί επεξεργασία μία φορά (Βιέννη: −2 ώρες). Αυτό διορθώθηκε. Επιπλέον, μια μετανάστευση δεδομένων (data migration) κανονικοποιεί τις ήδη αποθηκευμένες τιμές στην παλιά μορφή σε ISO, ώστε η ταξινόμηση και οι συγκρίσεις σε μεικτά δεδομένα να είναι σωστές. Καμία αλλαγή στα ονόματα των πεδίων ή στη δομή της απόκρισης.
  • Υπόβαθρο: Ίδια κατηγορία σφάλματος με τις δύο διορθώσεις παρακάτω (λήξη API-Key, όριο επανασάρωσης): το datetime('now') της SQLite γράφει YYYY-MM-DD HH:MM:SS, ενώ όλοι οι άλλοι εγγραφείς γράφουν ISO 8601. Μια δοκιμή προστασίας πηγαίου κώδικα (source code guard test) θα αποτρέψει μελλοντικές εμφανίσεις.

2026-08 · Η σελιδοποίηση λίστας δεν χάνει πλέον κωδικούς batch

  • Διόρθωση: Τα GET /v1/codes και GET /v1/dpp πραγματοποιούσαν σελιδοποίηση αποκλειστικά μέσω του created_at. Ωστόσο, οι κωδικοί από τα POST /v1/codes/batch, POST /v1/dpp/batch και την εισαγωγή CSV/XLSX μοιράζονται μία κοινή χρονική σήμανση — μόλις ένα batch ήταν μεγαλύτερο από το limit (προεπιλογή 20), η δεύτερη σελίδα δεν επέστρεφε πλέον τις υπόλοιπες γραμμές της ίδιας χρονικής σήμανσης. Οι κωδικοί υπήρχαν και ήταν προσβάσιμοι μέσω του GET /v1/codes/:id, αλλά δεν εμφανίζονταν ποτέ στη λίστα (Dashboard, CLI qr3 list, SDKs, MCP). Ο κέρσορας είναι πλέον ένα keyset μέσω του (created_at, id).
  • Αλλαγή API: Το meta.pagination.next_cursor είναι πλέον μια αδιαφανής τιμή (base64url) αντί για μια απλή χρονική σήμανση. Όσοι επιστρέφουν τον κέρσορα αμετάβλητο ως ?cursor= — όπως ακριβώς κάνουν το Dashboard, το CLI, όλα τα SDKs και ο MCP-server — δεν χρειάζεται να αλλάξουν τίποτα. Οι παλιοί κέρσορες χρονικής σήμανσης θα συνεχίσουν να γίνονται δεκτοί μεταβατικά· οι μη αναγνώσιμοι κέρσορες επιστρέφουν πλέον 400 αντί να επιστρέφουν σιωπηρά την πρώτη σελίδα.
  • Αντίκτυπος: Αν μετά από μια εισαγωγή batch βλέπατε στη λίστα λιγότερους κωδικούς από όσους είχαν δημιουργηθεί: Οι κωδικοί δεν είχαν χαθεί ποτέ — η λίστα τους εμφανίζει πλέον πλήρως. Δεν απαιτείται μετανάστευση.

2026-08 · Οι επανασαρώσεις ασφαλείας εκτελούνται ξανά σε 24ωρη βάση

  • Διόρθωση: Η περιοδική επανασάρωση των URL προορισμού και των συνδέσμων της σελίδας προορισμού (Google Web Risk) παρέλειπε κώδικες των οποίων η τελευταία σάρωση έγινε την ίδια ημερολογιακή ημέρα με το όριο (cutoff) των 24 ωρών — ανάλογα με την ώρα, η επανασάρωση καθυστερούσε έως και μία επιπλέον ημέρα. Το όριο (cutoff) υπολογίζεται πλέον στην ίδια μορφή ISO στην οποία αποθηκεύονται οι χρονικές σημάνσεις (timestamps) σάρωσης.
  • Αντίκτυπος: Ένα URL προορισμού που χαρακτηρίζεται ως μη ασφαλές μετά την τελευταία σάρωση, οδηγεί ξανά στην αυτόματη παύση του κώδικα εντός του τεκμηριωμένου παραθύρου 24 ωρών. Καμία αλλαγή στο API ή στη μορφή απόκρισης.

2026-08 · Τα API-Keys λήγουν τη στιγμή της λήξης τους

  • Διόρθωση: Ένα API-Key, του οποίου το expires_at ήταν την ίδια ημέρα, γινόταν δεκτό μέχρι τα μεσάνυχτα UTC. Η λήξη συγκρίνεται πλέον ως χρονική σήμανση αντί για συμβολοσειρά — ένα ληγμένο Key επιστρέφει αμέσως 401.
  • Υπόβαθρο: Το expires_at αποθηκεύεται ως ISO χρονική σήμανση (2026-08-14T09:00:00Z), ενώ η πλευρά σύγκρισης παρείχε τη μορφή με κενό διάστημα (2026-08-14 09:00:00). Η απλή σύγκριση συμβολοσειρών ήταν επομένως σωστή μόνο εφόσον διέφερε ήδη η ημερομηνία.
  • Αντίκτυπος: Δεν απαιτείται μετανάστευση, η μορφή απόκρισης του GET /v1/api-keys παραμένει αμετάβλητη. Μη αναγνώσιμες τιμές λήξης θεωρούνται πλέον ληγμένες αντί για έγκυρες.

2026-08 · Αναφορά API: Τεκμηρίωση διαχείρισης Tenant

  • OpenAPI: Η προδιαγραφή — και συνεπώς η διαδραστική αναφορά — τεκμηριώνει πλέον Οργανισμούς (συμπεριλαμβανομένου του GET /v1/organizations/usage), Workspaces, Μέλη & Ρόλους και Audit-Logs.
  • Billing: Η επισκόπηση προγραμμάτων (GET /v1/billing/plans) είναι δημόσια· το Checkout (POST /v1/billing/checkout) και η πύλη πελατών Stripe (GET /v1/billing/portal) ορίζονται ως endpoints για διαχειριστές οργανισμών.
  • Εξαγωγή σαρώσεων: Τα στατιστικά σαρώσεων (GET /v1/codes/{id}/scans) και η εξαγωγή ακατέργαστων δεδομένων (…/scans.csv, …/scans.xlsx) είναι πλήρως τεκμηριωμένα — συμπεριλαμβανομένης της σημείωσης για τον ΓΚΠΔ: Το ip_hash δεν περιλαμβάνεται ποτέ στην εξαγωγή.
  • Συμπεριφορά σφάλματος: Έχει επίσης τεκμηριωθεί πρόσφατα η απάντηση 400 της επικύρωσης αιτήματος: Το body είναι το ακατέργαστο σφάλμα Zod, όχι ένα έγγραφο προβλήματος RFC-7807 — παρόλα αυτά, παραδίδεται με το Content-Type application/problem+json.

2026-08 · Αντιγραφή δημόσιων συνδέσμων αρχείων

  • Dashboard: Τα δημόσια αρχεία στη σελίδα λεπτομερειών κώδικα διαθέτουν πλέον ένα κουμπί που αντιγράφει τον δημόσιο σύνδεσμό τους στο πρόχειρο – έτοιμο προς χρήση ως URL προορισμού ενός QR-Code, εάν θέλετε η σάρωση να ανοίγει αμέσως ένα συγκεκριμένο έγγραφο αντί για τη σελίδα προορισμού με τη λίστα αρχείων.
  • API: Τα endpoints αρχείων (/v1/files) επιστρέφουν επιπλέον το πεδίο public_url. Το πεδίο αυτό ορίζεται μόνο για αρχεία με visibility: public – τα ιδιωτικά αρχεία δεν λαμβάνουν δημόσια διεύθυνση.
  • Συμπεριφορά: Ο σύνδεσμος δεν απαιτεί σύνδεση και ανοίγει το αρχείο απευθείας στο πρόγραμμα περιήγησης. Η αντικατάσταση του αρχείου τον αφήνει αμετάβλητο, επομένως ένας εκτυπωμένος κώδικας που οδηγεί σε αυτόν παραμένει έγκυρος. Λεπτομέρειες: Αρχεία & Φύλλα Δεδομένων.

2026-07 · Ρόλοι ομάδας: Συντάκτης χωρίς διαγραφή & Χρέωση διαχειριστή

  • Νέο: Ρόλος μέλους Συντάκτης (χωρίς διαγραφή) — δημιουργεί και επεξεργάζεται QR-Codes, αρχεία και Digital Product Passports, αλλά δεν μπορεί να διαγράψει τίποτα ούτε να δημιουργήσει API-Keys. Όλα τα καταστροφικά endpoints ελέγχουν τον ρόλο στην πλευρά του διακομιστή (403).
  • Χρέωση: Οι αναβαθμίσεις προγραμμάτων και η πύλη πελατών Stripe (POST /v1/billing/checkout, GET /v1/billing/portal) προορίζονται πλέον αποκλειστικά για τους διαχειριστές του οργανισμού — όλοι οι άλλοι ρόλοι βλέπουν μια επισκόπηση προγράμματος μόνο για ανάγνωση.
  • Dashboard: Οι ενέργειες που δεν επιτρέπονται από τον ρόλο του χρήστη αποκρύπτονται: Ένας Αναγνώστης δεν βλέπει, για παράδειγμα, κουμπιά για δημιουργία, επεξεργασία ή διαγραφή, ενώ οι λίστες, οι λήψεις και τα στατιστικά στοιχεία παραμένουν ορατά. Λεπτομέρειες: Ομάδα & Ρόλοι.

2026-06 · Εξωτερικοί σύνδεσμοι στη σελίδα προορισμού του κώδικα

  • Σελίδα προορισμού: Η σελίδα προορισμού ενός κώδικα που φιλοξενείται από το qr3 μπορεί πλέον να εμφανίζει εξωτερικούς, αυτο-φιλοξενούμενους συνδέσμους ({ label, url }) – επιπλέον ή αντί για μεταφορτωμένα αρχεία, για παράδειγμα για φύλλα δεδομένων στον δικό σας ιστότοπο.
  • API: Τα POST/PATCH /v1/codes αποδέχονται έναν πίνακα links (0–20 εγγραφές, http(s), ≤ 2048 χαρακτήρες). Κάθε URL ελέγχεται με το Google Web Risk. Ένα μη ασφαλές URL επιστρέφει 422. Ένας κενός πίνακας διαγράφει όλους τους συνδέσμους.
  • Dashboard: Προσθήκη, ταξινόμηση και αφαίρεση συνδέσμων στη σελίδα λεπτομερειών του κώδικα.
  • Ασφάλεια: Οι σύνδεσμοι που αποδίδονται παραμένουν ασφαλείς από XSS (escaped, μόνο http(s)) και η σελίδα διατηρεί την κεφαλίδα noindex.

2026-04 · Analytics πίνακα ελέγχου (Dashboard) ανά QR-Code

  • Dashboard: Το κουμπί Analytics στη λίστα των QR-Codes ανοίγει πλέον τη σελίδα στατιστικών του αντίστοιχου QR-Code στη διαδρομή /dashboard/codes/{id}.
  • Routing: Το ψευδώνυμο (alias) /dashboard/codes εξακολουθεί να ανακατευθύνει στο /dashboard, αλλά δεν παρεμποδίζει πλέον τις διαδρομές λεπτομερειών όπως η /dashboard/codes/{id}.
  • API: Η σελίδα λεπτομερειών φορτώνει τον QR-Code απευθείας μέσω GET /v1/codes/:id. Έτσι, δεν εξαρτάται πλέον από τα όρια σελιδοποίησης (pagination limits) της λίστας.
  • Δοκιμές: Οι δοκιμές παλινδρόμησης (regression tests) καλύπτουν την ανακατεύθυνση του ψευδωνύμου και την απευθείας φόρτωση του κώδικα.

2026-04 · Διάλογος διαγραφής πίνακα ελέγχου (Dashboard) για QR-Codes

  • Dashboard: Το εικονίδιο του κάδου απορριμμάτων στη λίστα των QR-Codes ανοίγει πλέον έναν προσαρμοσμένο διάλογο React αντί για ένα εγγενές αναδυόμενο παράθυρο (popup) του προγράμματος περιήγησης.
  • Ανατροφοδότηση: Μετά τη διαγραφή, εμφανίζεται μια ειδοποίηση toast για επιτυχία ή σφάλμα.
  • Δοκιμές: Το αρχείο packages/dashboard/tests/dashboard.test.ts αποτρέπει παλινδρομήσεις στη χρήση της confirm() στη ροή διαγραφής QR-Code.

2026-04 · Δοκιμή σύντομου συνδέσμου πίνακα ελέγχου (Dashboard) για δυναμικά QR-Codes

  • Dashboard: Οι σύντομοι κωδικοί (shortcodes) στη λίστα των QR-Codes είναι πλέον άμεσα κλικάσιμοι ως εξωτερικοί σύνδεσμοι ανακατεύθυνσης. Το εικονίδιο εξωτερικού συνδέσμου δίπλα στο π.χ. wu3qaa ανοίγει τη διεύθυνση https://qr3.app/{shortCode} σε νέα καρτέλα.
  • i18n: Προσθήκη κειμένων tooltip για Γερμανικά και Αγγλικά.
  • Δοκιμές: Το αρχείο packages/dashboard/tests/dashboard.test.ts προστατεύει το href του συνδέσμου, τη συμπεριφορά νέας καρτέλας, τα χαρακτηριστικά noopener noreferrer και το εικονίδιο από παλινδρομήσεις.

2026-04 · Διαδρομή Redirect-Worker για δυναμικά QR-Codes

  • Διόρθωση: Τα δυναμικά QR-Codes στη διεύθυνση https://qr3.app/{shortCode} επεξεργάζονται ξανά από τον Redirect-Worker. Η διαδρομή παραγωγής (production route) χρησιμοποιεί πλέον το qr3.app/*, επειδή οι διαδρομές Cloudflare Workers δεν υποστηρίζουν παραμέτρους διαδρομής :code.
  • Θωράκιση: Οι διαδρομές που δεν ταιριάζουν προωθούνται στην αρχική προέλευση (landing origin), ώστε οι κανονικές σελίδες όπως η /de/pricing να μην αποκλείονται από τον Redirect-Worker.
  • Δοκιμές: Το αρχείο packages/redirect/tests/unit/redirect.test.ts ελέγχει τη διαδρομή wildcard, την επεξεργασία shortcode και την προώθηση στην προέλευση (origin pass-through).

2026-04 · Επισκόπηση σαρώσεων DPP χώρου εργασίας (Q3.4.2)

  • Νέο: GET /v1/workspace/stats/dpp?days=30 — συγκεντρώνει όλες τις σαρώσεις dpp_scans του χώρου εργασίας του API-Key (active_dpps, scans_by_day, top_dpps με όνομα προϊόντος/κατηγορία).
  • Dashboard: Κάρτα στην αρχική σελίδα (/dashboard) με ραβδόγραμμα 30 ημερών + λίστες κορυφαίων στοιχείων — παράλληλα με τις κάρτες QR-Code.
  • Δημόσιο: Σύντομος σύνδεσμος μάρκετινγκ GET /dpp/dpp_<id> (ένα τμήμα) για ζωντανές επιδείξεις (live demos), παράλληλα με το /dpp/{gtin}/{serial}.

2026-04 · Analytics σαρώσεων DPP (Q3.4.1)

  • Νέο: GET /v1/dpp/:id/stats?days=30 — συγκεντρωτικές σαρώσεις του δημόσιου GS1-Resolver ανά DPP. Πεδία: total_scans, period_scans, scans_by_day, top_countries, top_devices, top_representations.
  • Νέο: Πίνακας dpp_scans (μεταφορά 0011) — ξεχωριστά από τις scans (Redirect-Worker). Οι διευθύνσεις IP κατακερματίζονται (hashed) με καθημερινά εναλλασσόμενο salt, οι ακατέργαστες IP δεν φτάνουν ποτέ στη D1.
  • Dashboard: Κάρτα μικρογραφήματος (SVG, χωρίς βιβλιοθήκη γραφημάτων) στη διαδρομή /dashboard/dpp/:dppId με ράβδους 30 ημερών + αναλύσεις των κορυφαίων 3 (top-3 breakdowns). Κατάσταση κενού (empty-state) μόλις ένα DPP είναι ενεργό αλλά δεν έχει ακόμη σαρώσεις.

2026-04 · Προσομοιωτής συμμόρφωσης ΕΕ σε πραγματικό χρόνο (Q3.3.7)

  • Νέο: POST /v1/dpp/:id/validate-update — προσομοιώνει μερικές ενημερώσεις χωρίς διατήρηση κατάστασης (stateless) (κατάσταση, λίστα αγορών, …) χωρίς μόνιμη αποθήκευση. Η απόκριση περιέχει τα eu_compliance + preview.changed_fields.
  • Dashboard: Κάρτα προσομοιωτή στις λεπτομέρειες DPP (/dashboard/dpp/:dppId) — ετικέτες (chips) για DE/AT/FR/IT/ES/NL + προσαρμοσμένες, αναπτυσσόμενο μενού κατάστασης, Preview EU impact / Save changes / Reset. Μη αποκλειστικό (non-blocking) μέσω του Remix useFetcher.
  • Θωράκιση: Εξωτερικευμένοι βοηθοί προσομοιωτή (readUpdatePatchFromForm, marketCountriesKey) + 18 νέες δοκιμές μονάδας (unit tests). Διόρθωση σφάλματος: Η μεμονωμένη εισαγωγή μη ISO τιμής δεν διαγράφει πλέον τη λίστα αγορών.

2026-04 · Προεπισκόπηση συμμόρφωσης ΕΕ σε πραγματικό χρόνο στη φόρμα δημιουργίας (Q3.3.6)

  • Τροποποιήθηκε: Το POST /v1/dpp/validate επιστρέφει επιπλέον το eu_compliance — ο ίδιος επικυρωτής (validator) με το GET /v1/dpp/:id/eu-compliance, stateless πριν από την αποθήκευση.
  • Dashboard: Προεπισκόπηση κάτω από το υπάρχον πλαίσιο επικύρωσης (validation panel) + νέο πλαίσιο προστασίας αποθήκευσης (Save-Guard-Banner) πριν από τα κουμπιά υποβολής, εάν υπάρχουν εκκρεμή σφάλματα/προειδοποιήσεις (i18n-pluralization DE/EN).

2026-04 · Εργαλείο επικύρωσης ΕΕ + UI κλωστοϋφαντουργικών (Q3.3.4 + Q3.3.5)

  • Νέο: Εργαλείο επικύρωσης συμμόρφωσης ΕΕ με 5 κανόνες κλωστοϋφαντουργικών (TEXTILE_AGEC_REQUIRED, TEXTILE_MICROPLASTICS_CONSISTENCY, TEXTILE_SVHC_THRESHOLD, TEXTILE_GREENWASHING, TEXTILE_ESPR_READY).
  • Νέο: GET /v1/dpp/:id/eu-compliance με compliant / espr_ready / issues[] / summary.
  • Dashboard: Ενότητα συμμόρφωσης ΕΕ (EU-Compliance-Section) στις λεπτομέρειες DPP (πλακίδια σύνοψης, ομαδοποιημένες κάρτες προβλημάτων, σήμα ESPR-Ready στην κεφαλίδα).

2026-04 · Σχήμα DPP κλωστοϋφαντουργικών (Q3.3.1–Q3.3.3)

  • Νέο: Κατηγορία textile με υποχρεωτική αλυσίδα AGEC (Ύφανση/Πλέξιμο → Βαφή/Εκτύπωση → Ραφή/Κατασκευή), ανά ίνα origin_country + recycled_pct, svhc_substances[], ESPR-Opt-in (PEF, διάρκεια ζωής, Recyclability).
  • Νέο: Βασικό πεδίο market_countries: string[] (ISO 3166-1 alpha-2) σε όλες τις κατηγορίες DPP — ελέγχει τους ειδικούς κανόνες AGEC για τη Γαλλία (FR) και τη γαλλική υποχρεωτική σημείωση καταναλωτή.
  • Νέο: Πρότυπο HTML καταναλωτή με πλαίσιο προειδοποίησης μικροπλαστικών AGEC, αλυσίδα προέλευσης 3 σταδίων (flag-pills), λίστα SVHC, ενότητα Durability και Recyclability.
  • Μεταφορά: 0010_dpp_market_countries (D1).

2026-04 · Μαζική εισαγωγή DPP (Q3.2.1–Q3.2.5)

  • Νέο: Το POST /v1/dpp/import αποδέχεται CSV και XLSX (συμβατό με Workers μέσω του SheetJS xlsx, ~283 KB gzip bundle).
  • Κλιμακούμενο: όριο βάσει προγράμματος (Free 100 → Enterprise 10k) + τμηματοποιημένο db.batch() ανά 100 + όριο σώματος (body limit) 5 MB.
  • Νέο: Αναφορά σφαλμάτων ως CSV στο πεδίο errors_csv της απόκρισης 201. Το GET /v1/dpp/import/templates/:category?format=csv|xlsx παρέχει έτοιμα πρότυπα για μπαταρίες και κλωστοϋφαντουργικά.
  • Dashboard: Μεταφόρτωση με μεταφορά και απόθεση (Drag-and-Drop) στη διαδρομή /dashboard/dpp/import με διαμεσολαβητή προτύπων (template proxy) και ενσωματωμένη λήψη CSV.

Μη διασπαστικές αλλαγές (Non-Breaking) — Επεκτάσεις LTS

Όλες οι παραπάνω αλλαγές είναι προσθετικές:

  • Οι υπάρχοντες πελάτες του POST /v1/dpp/validate αγνοούν το νέο πεδίο eu_compliance χωρίς να απαιτείται αλλαγή.
  • Οι υπάρχουσες ροές battery παραμένουν αμετάβλητες.
  • Το πεδίο market_countries είναι προαιρετικό και έχει ως προεπιλογή το [].

Δείτε την Έκδοση API για την πολιτική διασπαστικών αλλαγών (Breaking-Change-Policy).