Monitor degli obblighi sugli imballaggi
Lingua: Italiano

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.