Overvågning af emballageforpligtelser
Sprog: Dansk

Overvågning af emballageforpligtelser · ADGANG FOR UDVIKLERE

API og webhooks

Brug dit produkts URL i eksemplerne nedenfor. Opbevar API-nøgler på din server. Åbn interaktiv API-dokumentation ↗

Læs offentlige registreringer

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

Offentlige svar indeholder kun de tre seneste registreringer pr. register. Indholdet af ældre registreringer kræver PRO; direkte URL'er giver en begrænset forhåndsvisning. Følg next_offset, indtil værdien er null, også når en filtreret side ikke indeholder registreringer. Henvis til hver original source_url. Datoer for offentliggørelse og observation er forskellige hændelser.

Læs PRO-registreringer

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

Opret eller udskift din nøgle på din konto. En nøgle virker kun til dette produkt, og kun mens betalt adgang er aktiv.

Eksportformater

PRO omfatter CSV, Excel (.xlsx), XML, RSS og Atom. Brug dit produkts API-nøgle og de samme filtre til alle formater. Du kan for eksempel hente op til 100 registreringer som en Excel-projektmappe:

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

Erstat xlsx med csv, xml, rss eller atom. Tilføj filtre såsom document_type=adopted eller facility_id=YOUR_FACILITY_ID. Følg svarets Link-header med rel="next", indtil den ikke længere findes, og behold Authorization-headeren i hver anmodning. Hver side er begrænset til 100 registreringer; en filtreret side kan være tom, selv om der findes en senere side.

Til RSS og Atom skal du konfigurere en læser, der understøtter Authorization-headeren. Læserens URL'er indeholder ingen nøgle. Poster har stabile registrerings-id'er, og læsere, der ikke følger sideinddelingen, får den nyeste side. Brug den sideinddelte API, når du har brug for alle registreringer.

Læs en registrerings historik

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

Erstat RECORD_ID med et returneret registrerings-id. Historikken returnerer et array med de nyeste først. Fortsæt med at øge offset med sidens længde, indtil en side er kortere end den ønskede limit. Versioner kan være kildeændringer eller rettelser af dataudtræk.

Opret forbindelse 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"}}}'

Tilføj den samme Authorization-header for PRO-felter. Slutpunktet understøtter også initialize, tools/list og notifications/initialized. Brug REST-sideinddelingen ovenfor, når du læser et helt register.

Bekræft webhook-signaturer

Signaturheaderen er X-Register-Signature: t=TIMESTAMP,v1=HEX_DIGEST. Bekræft den rå beskedtekst, før du fortolker JSON. Gem permanent id'erne fra X-Register-Event-hændelser, der er håndteret korrekt, så gentagne leveringsforsøg ikke gentager følgevirkninger.

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);
}

Returner først et succesfuldt svar, når hændelsen er gemt permanent. Antallet af genforsøg på levering er begrænset; den senest registrerede status vises på din konto. En leveringskvittering bekræfter ikke, at din applikation er færdig med at behandle hændelsen.