Bevakning av förpackningsskyldigheter
Språk: Svenska

Bevakning av förpackningsskyldigheter · ÅTKOMST FÖR UTVECKLARE

API och webhooks

Använd produktens adress i exemplen nedan. Förvara API-nycklar på din server. Öppna interaktiv API-dokumentation ↗

Läs offentliga poster

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0'

Offentliga svar innehåller bara de tre senaste posterna per register. Innehållet i äldre poster kräver PRO; direkta adresser ger en begränsad förhandsvisning. Följ next_offset tills värdet är null, även när en filtrerad sida saknar poster. Hänvisa till varje ursprunglig source_url. Publicerings- och observationsdatum avser olika händelser.

Läs PRO-poster

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY'

Skapa eller byt nyckel på ditt konto. En nyckel fungerar bara för den här produkten och bara medan betald åtkomst är aktiv.

Exportformat

PRO innehåller CSV, Excel (.xlsx), XML, RSS och Atom. Använd produktens API-nyckel och samma filter för alla format. Du kan till exempel ladda ner upp till 100 poster som en Excel-arbetsbok:

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records/export.xlsx?limit=100&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY' \
  -D export-headers.txt -o records.xlsx

Byt ut xlsx mot csv, xml, rss eller atom. Lägg till filter som document_type=adopted eller facility_id=YOUR_FACILITY_ID. Följ svarets Link-header med rel="next" tills den saknas och behåll Authorization-headern i varje begäran. Varje sida har högst 100 poster; en filtrerad sida kan vara tom trots att en senare sida finns.

För RSS och Atom behöver du konfigurera en läsare som stöder Authorization-headern. Läsaradresserna innehåller ingen nyckel. Poster har stabila post-id:n, och läsare som inte följer sidindelningen får den senaste sidan. Använd det sidindelade API:et när du behöver alla poster.

Läs en posts historik

curl 'https://verpackung.getregisters.com/api/v1/records/RECORD_ID/history?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY'

Byt ut RECORD_ID mot ett returnerat post-id. Historiken returnerar en lista med de nyaste först. Fortsätt genom att öka offset med sidans längd tills en sida är kortare än begärt limit-värde. Versioner kan vara källändringar eller korrigeringar av dataextraktionen.

Anslut med MCP

curl 'https://verpackung.getregisters.com/api/v1/mcp' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"read_register","arguments":{"feed_id":"de-packaging-compliance"}}}'

Lägg till samma Authorization-header för PRO-fält. Slutpunkten stöder även initialize, tools/list och notifications/initialized. Använd REST-sidindelningen ovan när du läser ett helt register.

Verifiera webhook-signaturer

Signaturheadern är X-Register-Signature: t=TIMESTAMP,v1=HEX_DIGEST. Verifiera den rå meddelandetexten innan du tolkar JSON. Spara beständigt id:n för X-Register-Event-händelser som har hanterats så att nya leveransförsök inte upprepar följdeffekter.

import { createHmac, timingSafeEqual } from 'node:crypto';

export function verify(rawBody, header, secret) {
  const fields = Object.fromEntries(header.split(',').map(x => x.split('=')));
  const timestamp = Number(fields.t);
  if (!Number.isFinite(timestamp) || Math.abs(Date.now()/1000 - timestamp) > 300) return false;
  if (!/^[a-f0-9]{64}$/.test(fields.v1 || '')) return false;
  const expected = createHmac('sha256', secret).update(fields.t + '.').update(rawBody).digest();
  const supplied = Buffer.from(fields.v1, 'hex');
  return supplied.length === expected.length && timingSafeEqual(supplied, expected);
}

Returnera ett lyckat svar först när händelsen har sparats beständigt. Antalet nya leveransförsök är begränsat; det senaste registrerade utfallet visas på ditt konto. En leveransbekräftelse betyder inte att din applikation har behandlat händelsen färdigt.