Каталог
Каталог
Завантажте повний каталог продуктів і працюйте з ним офлайн
Повний каталог продуктів — кожен товар, доступний для замовлення, з його ціною,
запасом, типом продукту та формою вводу — публікується як єдиний знімок для
завантаження. Ви завантажуєте його, читаєте локально та використовуєте id
кожного товару та його fields, щоб розміщувати замовлення. Немає
пагінованого ендпоінта «list products» для програмного використання; знімок
і є каталогом.
URL для завантаження:
Надається через CDN cdn.voodoo.center. Для завантаження автентифікація не потрібна.
Персональний каталог
URL вище надає глобальний каталог, який використовує стандартні ціни. Якщо
ваш акаунт має персональні (узгоджені) ціни — перевизначення ціни для
окремих товарів — існує окремий персональний каталог, опублікований за URL,
що містить client id вашого акаунта. Він містить ті самі записи, але price
та subscriber_price відображають ціни вашого акаунта. Використовуйте
персональний файл, якщо він існує; інакше використовуйте глобальний.
URL для завантаження персонального каталогу:
Знайдіть свій Client ID — і готову до використання URL-адресу персонального
каталогу — на сторінці API в дашборді (та сама сторінка, де ви керуєте
API-ключами та webhook). Не кожен акаунт має персональні ціни: якщо ваш не має,
ця URL повертає 404 — у такому разі поверніться до catalog.lmdb.zst.
Це той самий формат і схема, що й у глобального каталогу (стиснена zstd однофайлова база даних LMDB); єдина відмінність — значення цін. Отже: спробуйте свою персональну URL, поверніться до глобальної у разі 404, а потім розпакуйте, відкрийте та прочитайте файл точно так, як показано нижче.
Що ви отримуєте
catalog.lmdb.zst — це однофайлова база даних LMDB,
стиснена за допомогою zstandard:
- Один файл, один простір ключів. Товари зберігаються в базі даних LMDB за замовчуванням. Кожен товар — це один запис: ключ = 8-байтний item id у форматі big-endian, значення = компактний JSON-обʼєкт.
- Самодостатні записи. Кожен товар вбудовує повну форму вводу (
fields, де кожне поле вибору має своїoptions) вбудовано, тож єдиний пошук за ключем дає вам усе потрібне для замовлення цього товару. - Малий і швидкий. Повний каталог стискається приблизно в 45× (база даних ~1,5 МБ → ~34 КБ). Ви розпаковуєте один раз, а потім відображаєте базу даних у памʼять і читаєте її без звернень до сервера.
Ціни в каталозі вказані в центах (цілі числа) і відображають стандартні ціни. Ваше фінальне списання завжди підтверджується відповіддю замовлення та вашим балансом — див. Розміщення замовлень.
Завантаження та відкриття
Установіть два читачі, а потім завантажте → розпакуйте → відкрийте лише для читання.
★ Пояснення ─────────────────────────────────────
LMDB відображається в памʼять, тож відкриття файлу практично безкоштовне, а
пошуки читаються прямо з кешу сторінок ОС — ви можете тримати середовище
відкритим і звертатися до нього мільйони разів, нічого не перечитуючи повторно.
Саме тому каталог постачається як LMDB, а не як один величезний JSON-масив.
─────────────────────────────────────────────────
Схема запису
Кожне значення — це JSON-обʼєкт:
Кожен запис у fields:
Використання каталогу з Orders API
Усе, що потрібно для побудови запиту POST /api/v1/orders, є в записі:
item_id=idзапису.quantity— обмеженаmin_quantity/max_quantity. Обовʼязкова дляtopup(десяткова) таkey(ціла, за замовчуванням1); пропустіть дляservice.fields— обовʼязкові лише дляtopupіservice. Індексуйте кожен запис заnameполя. Для поляchoiceнадсилайтеidобраного варіанта (ціле число), а не йогоvalue. Для текстових полів надсилайте рядок.
Підтримання актуальності
Знімок регулярно перегенеровується. Його свіжість — це HTTP-заголовки ETag /
Last-Modified обʼєкта; використовуйте умовний запит, щоб повторно завантажувати
лише тоді, коли він справді змінився:
Простий і надійний підхід для працюючої інтеграції: оновлюйте за розкладом (наприклад, кожні кілька хвилин) умовним запитом вище, і коли надходить новий файл, розпаковуйте його та замінюйте відкрите середовище LMDB.