Monitor degli obblighi sugli imballaggi · ACCESSO PER SVILUPPATORI
API e webhook
Usa l'URL del tuo prodotto negli esempi seguenti. Conserva le chiavi API sul tuo server. Apri la documentazione interattiva dell'API ↗
Leggi i record pubblici
curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0' Le risposte pubbliche contengono solo i tre record più recenti per registro. Per i contenuti precedenti serve PRO; gli URL diretti mostrano un'anteprima limitata. Segui next_offset finché non è null, anche quando una pagina filtrata non contiene record. Cita ogni source_url originale. Le date di pubblicazione e di osservazione indicano eventi diversi.
Leggi i record PRO
curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0' \
-H 'Authorization: Bearer YOUR_SCOPED_KEY' Crea o rinnova la chiave nel tuo account. La chiave funziona solo per questo prodotto e finché l'accesso a pagamento è attivo.
Formati di esportazione
PRO include CSV, Excel (.xlsx), XML, RSS e Atom. Usa la chiave API del tuo prodotto e gli stessi filtri per ogni formato. Per esempio, scarica fino a 100 record in una cartella di lavoro Excel:
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 Sostituisci xlsx con csv, xml, rss o atom. Aggiungi filtri come document_type=adopted o facility_id=YOUR_FACILITY_ID. Segui l'intestazione Link della risposta con rel="next" finché non scompare, mantenendo l'intestazione Authorization per ogni richiesta. Ogni pagina è limitata a 100 record; una pagina filtrata può essere vuota anche se ne seguono altre.
Per RSS e Atom, configura un lettore che supporti l'intestazione Authorization. Gli URL del lettore non contengono chiavi. Le voci hanno ID di record stabili; i lettori che non seguono la paginazione ricevono la pagina più recente. Usa l'API paginata se ti servono tutti i record.
Leggi la cronologia di un record
curl 'https://verpackung.getregisters.com/api/v1/records/RECORD_ID/history?limit=50&offset=0' \
-H 'Authorization: Bearer YOUR_SCOPED_KEY' Sostituisci RECORD_ID con l'ID di un record restituito. La cronologia restituisce un array dal più recente al più vecchio. Aumenta offset della lunghezza della pagina finché una pagina non è più corta del limite richiesto. Le versioni possono derivare da modifiche della fonte o correzioni dell'estrazione.
Connettiti con 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"}}}' Aggiungi la stessa intestazione Authorization per i campi PRO. L'endpoint supporta anche initialize, tools/list e notifications/initialized. Usa la paginazione REST descritta sopra per leggere un registro completo.
Verifica le firme dei webhook
L'intestazione della firma è X-Register-Signature: t=TIMESTAMP,v1=HEX_DIGEST. Verifica il corpo originale prima di analizzare il JSON. Conserva in modo duraturo gli ID X-Register-Event elaborati correttamente, così i nuovi tentativi non ripetono gli effetti dell'evento.
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);
} Restituisci una risposta positiva solo dopo aver registrato l'evento in modo duraturo. I tentativi di consegna sono limitati; il tuo account mostra l'ultimo esito registrato. Una conferma di consegna non dimostra che l'applicazione abbia terminato l'elaborazione dell'evento.