Monitor obowiązków dotyczących opakowań
Język: Polski

Monitor obowiązków dotyczących opakowań · DOSTĘP DLA PROGRAMISTÓW

API i webhooki

W poniższych przykładach użyj adresu URL swojego produktu. Klucze API przechowuj na swoim serwerze. Otwórz interaktywną dokumentację API ↗

Odczytuj publiczne rekordy

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

Odpowiedzi publiczne zawierają tylko trzy najnowsze rekordy z każdego rejestru. Starsze rekordy wymagają PRO; bezpośrednie adresy URL pokazują ograniczony podgląd. Korzystaj z next_offset, aż przyjmie wartość null, także wtedy, gdy przefiltrowana strona jest pusta. Podawaj oryginalny source_url każdego rekordu. Daty publikacji i zaobserwowania odnoszą się do różnych zdarzeń.

Odczytuj rekordy PRO

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

Utwórz lub wymień klucz na swoim koncie. Klucz działa tylko dla tego produktu i tylko wtedy, gdy płatny dostęp jest aktywny.

Formaty eksportu

PRO obejmuje CSV, Excel (.xlsx), XML, RSS i Atom. Dla każdego formatu używaj klucza API produktu i tych samych filtrów. Na przykład pobierz do 100 rekordów jako skoroszyt 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

Zastąp xlsx przez csv, xml, rss lub atom. Dodaj filtry, takie jak document_type=adopted lub facility_id=YOUR_FACILITY_ID. Korzystaj z nagłówka Link odpowiedzi o wartości rel="next", aż zniknie, zachowując nagłówek Authorization przy każdym żądaniu. Każda strona zawiera najwyżej 100 rekordów; przefiltrowana strona może być pusta, choć istnieją kolejne.

Dla RSS i Atom skonfiguruj czytnik obsługujący nagłówek Authorization. Adresy URL czytnika nie zawierają klucza. Wpisy mają stałe identyfikatory rekordów, a czytniki bez obsługi stronicowania otrzymują najnowszą stronę. Jeśli potrzebujesz wszystkich rekordów, użyj stronicowanego API.

Odczytaj historię rekordu

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

Zastąp RECORD_ID identyfikatorem zwróconego rekordu. Historia zwraca tablicę od najnowszej wersji. Zwiększaj offset o długość strony, aż otrzymasz stronę krótszą niż żądany limit. Wersje mogą odzwierciedlać zmiany źródła lub poprawki ekstrakcji.

Połącz przez 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"}}}'

Dodaj ten sam nagłówek Authorization, aby uzyskać pola PRO. Punkt końcowy obsługuje także initialize, tools/list i notifications/initialized. Aby odczytać cały rejestr, użyj opisanego wyżej stronicowania REST.

Weryfikuj podpisy webhooków

Nagłówek podpisu ma postać X-Register-Signature: t=TIMESTAMP,v1=HEX_DIGEST. Zweryfikuj surową treść przed analizą JSON. Trwale zapisuj identyfikatory X-Register-Event pomyślnie obsłużonych zdarzeń, aby ponowne próby nie powtarzały skutków.

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

Zwróć odpowiedź potwierdzającą powodzenie dopiero po trwałym zapisaniu zdarzenia. Liczba ponownych prób dostarczenia jest ograniczona; na koncie zobaczysz ostatni zapisany wynik. Potwierdzenie dostarczenia nie oznacza, że Twoja aplikacja zakończyła przetwarzanie zdarzenia.