Монітор обов’язків щодо пакування
Мова: Українська

Монітор обов’язків щодо пакування · ДОСТУП ДЛЯ РОЗРОБНИКІВ

API та вебхуки

Використовуйте URL вашого продукту в прикладах нижче. Зберігайте ключі API на своєму сервері. Відкрити інтерактивну документацію API ↗

Читати публічні записи

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

Публічні відповіді містять лише три найновіші записи для кожного реєстру. Вміст давніших записів потребує PRO; прямі URL показують обмежений попередній перегляд. Дотримуйтеся next_offset, доки значення не стане null, навіть якщо відфільтрована сторінка порожня. Посилайтеся на оригінальний source_url кожного запису. Дати публікації й спостереження позначають різні події.

Читати записи PRO

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

Створіть або змініть ключ в обліковому записі. Ключ працює лише для цього продукту й доки активний платний доступ.

Формати експорту

PRO підтримує CSV, Excel (.xlsx), XML, RSS і Atom. Використовуйте ключ API свого продукту й однакові фільтри для кожного формату. Наприклад, щоб завантажити до 100 записів як книгу 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

Замініть xlsx на csv, xml, rss або atom. Додайте фільтри на кшталт document_type=adopted чи facility_id=YOUR_FACILITY_ID. Переходьте за заголовком Link із rel="next", доки він не зникне, зберігаючи заголовок Authorization у кожному запиті. На сторінці не більше 100 записів; відфільтрована сторінка може бути порожньою, хоча наступна існує.

Для RSS й Atom налаштуйте читач, що підтримує заголовок Authorization. URL читача не містять ключа. Записи мають стабільні ідентифікатори; читачі без переходу між сторінками отримають лише найновішу сторінку. Якщо потрібні всі записи, використовуйте API з пагінацією.

Читати історію запису

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

Замініть RECORD_ID ідентифікатором отриманого запису. Історія повертає масив від найновішого до найдавнішого. Збільшуйте offset на довжину сторінки, доки вона не стане коротшою за запитаний limit. Нові версії можуть виникати через зміни в джерелі або виправлення витягнутих даних.

Підключитися через 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"}}}'

Додайте той самий заголовок Authorization для полів PRO. Ця кінцева точка також підтримує initialize, tools/list і notifications/initialized. Щоб прочитати весь реєстр, використовуйте наведену вище пагінацію REST.

Перевірити підписи вебхуків

Формат заголовка підпису: X-Register-Signature: t=TIMESTAMP,v1=HEX_DIGEST. Перевірте необроблене тіло запиту до розбору JSON. Надійно зберігайте ідентифікатори X-Register-Event успішно оброблених подій, щоб повторні спроби не дублювали наслідки.

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

Повертайте успішну відповідь лише після надійного збереження події. Кількість повторних спроб доставки обмежена; обліковий запис показує останній зафіксований результат. Підтвердження доставки не означає, що ваш застосунок завершив обробку події.