Izmaiņu žurnāls
Izmaiņu žurnāls
Atlasīti pēdējo laidienu svarīgākie punkti. Pilnu informāciju par API versijām un saderību traucējošu izmaiņu politiku skatiet sadaļā API versiju izveide un LTS politika.
Detalizētas izmaiņas atsevišķos galapunktos: OpenAPI specifikācija un interaktīvā API atsauce.
2026-08 · Keyset kursors tagad visos sarakstu galapunktos
- Labojums: Kursora labojums galapunktiem
GET /v1/codesunGET /v1/dpp(skatīt zemāk) tagad ir ieviests visos pārējos sarakstos ar kursora pagināciju:GET /v1/qr-codes/:id/comments,/v1/workspaces,/v1/gs1/identifiers,/v1/members,/v1/audit-logs,/v1/admin/orgs,/v1/admin/usersun/v1/webhooks/:id/deliveries. Visi tie veica šķirstīšanu tikai pēccreated_at; rindas ar identisku laika zīmogu (audita ieraksti no batch operācijas, webhook atkārtotie mēģinājumi, dalībnieku importēšana) nākamajā lapā varēja tikt pazaudētas. Kārtošanas atslēga tagad visur ir kortežs(created_at, id). - API izmaiņas: Šajos sarakstos
meta.pagination.next_cursorno šī brīža ir arī necaurredzama vērtība (base64url), nevis vienkāršs laika zīmogs; nenolasāmi kursori atgriež400, bet vecie laika zīmoga kursori pārejas periodā joprojām tiks pieņemti. Izņēmums irGET /v1/webhooks/:id/deliveries: turnext_cursorjoprojām ir pēdējās piegādes ID (nezināms ID → pirmā lapa). Klientiem, kas atgriežnext_cursornemainītu — Dashboard, CLI, SDKs, MCP —, nekas nav jāmaina. - Ietekme: Nav nepieciešama migrācija. Ja kādā no šiem sarakstiem (piemēram, audita žurnālā vai piegādes žurnālā Dashboard) šķirstīšanas laikā pamanījāt trūkstošus ierakstus: tie nekad nebija pazuduši — saraksti tagad tos parāda pilnībā.
2026-08 · Laika zīmogi pēc rediģēšanas un dzēšanas atkal atbilst OpenAPI
- Labojums: Pēc
PATCH /v1/codes/{id}vērtībaupdated_attika atgriezta SQLite formātā bez laika zonas (2026-08-17 09:00:00), lai gan OpenAPI specifikācija paredzformat: date-timeun izveide (POST) nodrošina ISO laika zīmogu (2026-08-17T09:00:00.000Z). Tas pats attiecās uzdeleted_at/updated_atsoft-delete gadījumā, kā arī uz API atslēgu, organizāciju, darbvietu, dalībnieku, komentāru un webhook rediģēšanas/dzēšanas ceļiem, un papildus uz API atslēgulast_used_atun webhooklast_triggered_at. Visi rakstīšanas ceļi tagad izmanto ISO 8601 (UTC,TunZ). - Ietekme: Klienti, kas parsē
updated_atarnew Date(...)(SDKs, CLI, Dashboard), nolasīja atstarpes formātu kā vietējo laiku — CLI vienreiz rediģētiem kodiem rādīja laiku, kas nobīdīts par vietējo nobīdi (Vīne: −2 h). Tas ir novērsts. Papildus tam datu migrācija normalizē jau saglabātās vērtības vecajā formātā uz ISO, lai kārtošana un salīdzināšana jauktos datos būtu pareiza. Nav nekādu izmaiņu lauku nosaukumos vai atbildes struktūrā. - Konteksts: Tā pati kļūdu klase, kas abos tālāk minētajos labojumos (API atslēgu derīguma termiņš, atkārtotās skenēšanas robežlaiks): SQLite
datetime('now')rakstaYYYY-MM-DD HH:MM:SS, bet visi pārējie rakstītāji — ISO 8601. Pirmkoda aizsardzības tests turpmāk novērsīs jaunus šādus gadījumus.
2026-08 · Saraksta paginācija vairs nezaudē batch kodus
- Labojums:
GET /v1/codesunGET /v1/dppveica pagināciju tikai pēccreated_at. Tomēr kodi noPOST /v1/codes/batch,POST /v1/dpp/batchun CSV/XLSX importa koplieto vienu laika zīmogu — tiklīdz batch apjoms bija lielāks parlimit(pēc noklusējuma 20), otrā lapa vairs neatgrieza atlikušās rindas ar to pašu laika zīmogu. Kodi eksistēja un bija sasniedzami, izmantojotGET /v1/codes/:id, taču sarakstā (Dashboard, CLIqr3 list, SDKs, MCP) tie nekad neparādījās. Kursors tagad ir keyset pār(created_at, id). - API izmaiņas:
meta.pagination.next_cursorno šī brīža ir necaurredzama vērtība (base64url), nevis vienkāršs laika zīmogs. Tiem, kas atgriež kursoru nemainītu kā?cursor=— kā to dara Dashboard, CLI, visi SDKs un MCP serveris —, nekas nav jāmaina. Vecie laika zīmoga kursori pārejas periodā joprojām tiks pieņemti; nesalasāmi kursori tagad atgriež400, nevis klusi parāda pirmo lapu. - Ietekme: Ja pēc batch importa sarakstā redzējāt mazāk kodu, nekā tika izveidots: kodi nekad nebija pazuduši — saraksts tagad tos parāda pilnībā. Migrācija nav nepieciešama.
2026-08 · Drošības atkārtotā skenēšana atkal darbojas 24 stundu ciklā
- Labojums: Periodiskā mērķa URL un mērķlapu saišu (Google Web Risk) atkārtotā skenēšana izlaida kodus, kuru pēdējā skenēšana bija tajā pašā kalendārajā dienā, kad 24 stundu robežlaiks — atkarībā no diennakts laika atkārtotā skenēšana aizkavējās pat par vēl vienu dienu. Robežlaiks tagad tiek aprēķināts tajā pašā ISO formātā, kurā tiek saglabāti skenēšanas laika zīmogi.
- Ietekme: Mērķa URL, kas pēc pēdējās skenēšanas tiek klasificēts kā nedrošs, atkal izraisa automātisku koda apturēšanu dokumentētajā 24 stundu logā. Nav API vai atbildes formāta izmaiņu.
2026-08 · API atslēgu derīguma termiņš beidzas precīzā beigu laikā
- Labojums: API atslēga, kuras
expires_atbija tajā pašā dienā, joprojām tika akceptēta līdz pusnaktij pēc UTC. Derīguma termiņa beigas tagad tiek salīdzinātas kā laika zīmogs, nevis kā rakstzīmju virkne — atslēga ar beigušos derīguma termiņu nekavējoties atgriež401. - Konteksts:
expires_attiek saglabāts kā ISO laika zīmogs (2026-08-14T09:00:00Z), savukārt salīdzināšanas puse nodrošināja formātu ar atstarpi (2026-08-14 09:00:00). Tāpēc tiešais rakstzīmju virkņu salīdzinājums bija pareizs tikai tik ilgi, kamēr atšķīrās pats datums. - Ietekme: Migrācija nav nepieciešama, atbildes formāts no
GET /v1/api-keyspaliek nemainīgs. Nelasāmas derīguma termiņa vērtības tagad tiek uzskatītas par beigušām, nevis derīgām.
2026-08 · API atsauce: tenant pārvaldība dokumentēta
- OpenAPI: Specifikācija — un līdz ar to arī interaktīvā atsauce — tagad dokumentē organizācijas (tostarp
GET /v1/organizations/usage), darbvietas, dalībniekus un lomas un audita žurnālus. - Billing: Tarifu pārskats (
GET /v1/billing/plans) ir publisks; Checkout (POST /v1/billing/checkout) un Stripe klientu portāls (GET /v1/billing/portal) ir norādīti kā galapunkti organizācijas administratoriem. - Skenēšanas eksports: Skenēšanas statistika (
GET /v1/codes/{id}/scans) un neapstrādāto datu eksports (…/scans.csv,…/scans.xlsx) ir pilnībā dokumentēti — tostarp VDAR paziņojums:ip_hashnekad netiek iekļauts eksportā. - Kļūdu reakcija: Tagad ir dokumentēta arī pieprasījuma validācijas
400atbilde: pamatteksts ir neapstrādāta Zod kļūda, nevis RFC-7807 problēmas dokuments — tomēr tas tiek piegādāts ar Content-Typeapplication/problem+json.
2026-08 · Publisko failu saišu kopēšana
- Dashboard: Publiskiem failiem koda detaļu lapā tagad ir poga, kas kopē faila publisko saiti starpliktuvē – to var uzreiz izmantot kā QR koda mērķa URL, ja skenēšanai jāatver konkrēts dokuments, nevis mērķlapa ar failu sarakstu.
- API: Failu galapunkti (
/v1/files) papildus atgriežpublic_url. Lauks ir aizpildīts tikai failiem arvisibility: public– privātiem failiem publiskas adreses nav. - Uzvedība: Saite darbojas bez pieteikšanās un atver failu tieši pārlūkprogrammā. Funkcija Aizstāt to atstāj nemainītu, tāpēc ar šo saiti izdrukāts kods paliek derīgs. Sīkāka informācija: Faili un datu lapas.
2026-07 · Komandas lomas: Līdzstrādnieks bez dzēšanas un administratora norēķini
- Jaunums: dalībnieka loma Līdzstrādnieks (bez dzēšanas) — izveido un rediģē QR kodus, failus un Digital Product Passports, bet nevar neko dzēst vai izveidot API atslēgas. Visi destruktīvie galapunkti pārbauda lomu servera pusē (
403). - Norēķini: tarifu plānu jauninājumi un Stripe klientu portāls (
POST /v1/billing/checkout,GET /v1/billing/portal) tagad ir pieejami tikai organizācijas Administratoriem — visas pārējās lomas redz tikai lasāmu tarifu pārskatu. - Dashboard: darbības, kuras lietotāja loma nepieļauj, tiek paslēptas: piemēram, Skatītājs neredz pogas izveidei, rediģēšanai vai dzēšanai, taču saraksti, lejupielādes un statistika paliek redzami. Sīkāka informācija: Komanda un lomas.
2026-06 · Ārējās saites koda mērķlapā
- Mērķlapa: Koda qr3 mitinātā mērķlapa tagad var uzskaitīt ārējas, pašmitinātas saites (
{ label, url }) papildus augšupielādētajiem failiem vai to vietā – piemēram, datu lapām jūsu pašu vietnē. - API:
POST/PATCH /v1/codespieņem masīvulinks(0–20 ierakstu,http(s), ≤ 2048 rakstzīmju). Katrs URL tiek pārbaudīts ar Google Web Risk; nedrošs URL atgriež422. Tukšs masīvs dzēš visas saites. - Dashboard: Pievienojiet, pārkārtojiet un noņemiet saites koda detaļu lapā.
- Drošība: Renderētās saites paliek drošas pret XSS (ar atsoļa rakstzīmēm, tikai
http(s)), un lapa saglabā savunoindexgalveni.
2026-04 · Dashboard analītika katram QR kodam
- Dashboard: Analītikas poga QR kodu sarakstā tagad atver attiecīgā QR koda statistikas lapu adresē
/dashboard/codes/{id}. - Maršrutēšana: Aizstājvārds
/dashboard/codesjoprojām novirza uz/dashboard, taču vairs nepārtver detalizētos maršrutus, piemēram,/dashboard/codes/{id}. - API: Detalizētā lapa ielādē QR kodu tieši, izmantojot
GET /v1/codes/:id; tādējādi tā vairs nav atkarīga no saraksta lapošanas (pagination) ierobežojumiem. - Testi: Regresijas testi aptver aizstājvārda novirzīšanu un tiešo koda ielādi.
2026-04 · Dashboard dzēšanas dialoglodziņš QR kodiem
- Dashboard: Atkritumu tvertnes ikona QR kodu sarakstā tagad atver atsevišķu React dialoglodziņu, nevis pārlūkprogrammas noklusējuma uznirstošo logu.
- Atsauksmes: Pēc dzēšanas parādās “toast” paziņojums par veiksmīgu darbību vai kļūdu.
- Testi:
packages/dashboard/tests/dashboard.test.tsnovērš regresijas attiecībā uzconfirm()QR kodu dzēšanas plūsmā.
2026-04 · Dashboard īso saišu tests dinamiskajiem QR kodiem
- Dashboard: Īsie kodi (shortcodes) QR kodu sarakstā tagad ir tieši klikšķināmi kā ārējās novirzīšanas saites. Ārējās saites ikona blakus, piemēram,
wu3qaa, atverhttps://qr3.app/{shortCode}jaunā cilnē. - i18n: Pievienoti rīka padomu (tooltip) teksti vācu un angļu valodā.
- Testi:
packages/dashboard/tests/dashboard.test.tsaizsargā saites href, jaunās cilnes uzvedību,noopener noreferrerun ikonu pret regresijām.
2026-04 · Redirect-Worker maršruts dinamiskajiem QR kodiem
- Labojums: Dinamiskos QR kodus adresē
https://qr3.app/{shortCode}atkal apstrādā Redirect-Worker. Produkcijas maršruts tagad izmantoqr3.app/*, jo Cloudflare Worker maršruti neatbalsta:codeceļa parametrus. - Drošības uzlabošana: Neatbilstošie ceļi tiek nodoti tālāk uz galveno izcelsmes adresi (landing origin), lai Redirect-Worker nebloķētu parastās lapas, piemēram,
/de/pricing. - Testi:
packages/redirect/tests/unit/redirect.test.tspārbauda aizstājzīmes (wildcard) maršrutu, īso kodu apstrādi un izcelsmes caurlaidi (pass-through).
2026-04 · Workspace DPP skenēšanas pārskats (Q3.4.2)
- Jaunums:
GET /v1/workspace/stats/dpp?days=30— apkopo visus API atslēgas darba vietas (workspace)dpp_scans(active_dpps,scans_by_day,top_dppsar produkta nosaukumu/kategoriju). - Dashboard: Kartīte sākumlapā (
/dashboard) ar 30 dienu joslu diagrammu + top sarakstiem — paralēli QR kodu kartītēm. - Publisks: Mārketinga īsā saite
GET /dpp/dpp_<id>(viens segments) tiešraides demonstrācijām, paralēli/dpp/{gtin}/{serial}.
2026-04 · DPP skenēšanas analītika (Q3.4.1)
- Jaunums:
GET /v1/dpp/:id/stats?days=30— apkopoti publiskā GS1 atrisinātāja (resolver) skenējumi katram DPP. Lauki:total_scans,period_scans,scans_by_day,top_countries,top_devices,top_representations. - Jaunums: Tabula
dpp_scans(migrācija0011) — atdalīta noscans(Redirect-Worker). IP adreses tiek jauktas (hashed) ar katru dienu rotējošu sāli (salt), neapstrādātas IP adreses nekad nesasniedz D1. - Dashboard: Mini diagrammas kartīte (SVG, bez diagrammu bibliotēkas) adresē
/dashboard/dpp/:dppIdar 30 dienu joslām + top 3 sadalījumiem. Tukšs stāvoklis (empty state), tiklīdz DPP ir aktīvs, bet tam vēl nav bijis skenējumu.
2026-04 · Tiešsaistes ES atbilstības simulators (Q3.3.7)
- Jaunums:
POST /v1/dpp/:id/validate-update— simulē daļējus atjauninājumus bezstāvokļa (stateless) režīmā (statuss, tirgus saraksts, …) bez saglabāšanas. Atbilde satureu_compliance+preview.changed_fields. - Dashboard: Simulatora kartīte DPP detaļās (
/dashboard/dpp/:dppId) — čipi (chips) priekšDE/AT/FR/IT/ES/NL+ pielāgoti, statusa nolaižamā izvēlne, Preview EU impact / Save changes / Reset. Nebloķējoša darbība, izmantojot RemixuseFetcher. - Drošības uzlabošana: Ārēji simulatora palīgi (
readUpdatePatchFromForm,marketCountriesKey) + 18 jauni vienību testi; kļūdas labojums: atsevišķa ne-ISO ievade vairs neizdzēš tirgus sarakstu.
2026-04 · Tiešsaistes ES atbilstības priekšskatījums izveides formā (Q3.3.6)
- Mainīts:
POST /v1/dpp/validatepapildus sniedzeu_compliance— tas pats validators, kasGET /v1/dpp/:id/eu-compliance, bezstāvokļa režīmā pirms saglabāšanas. - Dashboard: Priekšskatījums zem esošā validācijas paneļa + jauns Save-Guard baneris pirms iesniegšanas pogām, ja ir aktīvas kļūdas/brīdinājumi (i18n daudzskaitļa formas DE/EN).
2026-04 · ES validators + tekstila saskarne (Q3.3.4 + Q3.3.5)
- Jaunums: ES atbilstības validators ar 5 tekstila noteikumiem (
TEXTILE_AGEC_REQUIRED,TEXTILE_MICROPLASTICS_CONSISTENCY,TEXTILE_SVHC_THRESHOLD,TEXTILE_GREENWASHING,TEXTILE_ESPR_READY). - Jaunums:
GET /v1/dpp/:id/eu-compliancearcompliant/espr_ready/issues[]/summary. - Dashboard: ES atbilstības sadaļa DPP detaļās (kopsavilkuma flīzes, grupētas problēmu kartītes, ESPR-Ready nozīmīte galvenē).
2026-04 · Tekstila DPP shēma (Q3.3.1–Q3.3.3)
- Jaunums: Kategorija
textilear AGEC obligāto ķēdi (aušana/adīšana → krāsošana/apdrukāšana → konfekcija), katrai šķiedraiorigin_country+recycled_pct,svhc_substances[], ESPR izvēles iespēja (PEF, kalpošanas laiks, Recyclability). - Jaunums: Bāzes lauks
market_countries: string[](ISO 3166-1 alpha-2) visām DPP kategorijām — kontrolē Francijai specifiskos AGEC noteikumus un Francijas patērētāju obligāto paziņojumu. - Jaunums: Patērētāju HTML veidne ar AGEC mikroplastmasas brīdinājuma lodziņu, 3 pakāpju izcelsmes ķēdi (karogu tabletes), SVHC sarakstu, Durability un Recyclability sadaļu.
- Migrācija:
0010_dpp_market_countries(D1).
2026-04 · DPP lielapjoma imports (Q3.2.1–Q3.2.5)
- Jaunums:
POST /v1/dpp/importpieņem CSV un XLSX (saderīgs ar Worker, izmantojot SheetJSxlsx, ~283 KB gzip pakotne). - Mērogots: uz plānu balstīts ierobežojums (Free 100 → Enterprise 10k) + sadalīts
db.batch()pa 100 + 5 MB ķermeņa (body) ierobežojums. - Jaunums: Kļūdu ziņojums kā CSV atbildes 201 laukā
errors_csv;GET /v1/dpp/import/templates/:category?format=csv|xlsxnodrošina gatavas veidnes akumulatoriem un tekstilam. - Dashboard: Vilkšanas un nomešanas (drag-and-drop) augšupielāde sadaļā
/dashboard/dpp/importar veidņu starpniekserveri (template proxy) un iekļautu CSV lejupielādi.
Saderīgas izmaiņas — LTS paplašinājumi
Visas iepriekš minētās izmaiņas ir papildinošas:
- Esošie
POST /v1/dpp/validateklienti ignorē jaunoeu_compliancelauku bez izmaiņām. - Esošās
batteryplūsmas paliek nemainītas. market_countriesir izvēles lauks, un tā noklusējuma vērtība ir[].
Skatīt API versiju izveide saderību traucējošu izmaiņu politikai.