К содержанию
SerpJet Документация Войти
Разделы
  1. Документация
  2. Публичный API доставки

article_id, delivery_id, article_identity, capability и защита от дублей

delivery_id — номер версии для доставки, article_id и article_identity — постоянная статья. Записывайте статью в CMS по article_identity и передавайте заголовок X-SerpJet-Capabilities: stable-article-identity-v1, чтобы получать все доставки без риска дублей.

Проверено
Содержание
  1. Три идентификатора
  2. Почему нельзя хранить запись по delivery_id
  3. Заголовок возможностей
  4. Рекомендуемый алгоритм upsert

Три идентификатора

ПолеЧто обозначаетКак использовать
delivery_idКонкретную версию статьи, выданную для доставки. У новой версии — новый delivery_id.Только для отправки result.
article_idСтатью в SerpJet. Не меняется.Для PATCH …/publication-url.
article_identityСтатью в виде serpjet:{project_id}:{article_id}.Как постоянный ключ записи в CMS.

Почему нельзя хранить запись по delivery_id

Если статья изменилась после выдачи, SerpJet выдаёт новую доставку с новым delivery_id и указывает прежнюю в predecessor_delivery_id. CMS, которая ищет запись по delivery_id, создаст вторую запись — дубликат. CMS, которая ищет по article_identity, обновит ту же запись.

Заголовок возможностей

Если ваша CMS работает по article_identity, сообщайте это в каждом запросе:

X-SerpJet-Capabilities: stable-article-identity-v1
  • С этим заголовком вы получаете все доставки, включая заменяющие версии (requires_stable_article_identity: true).
  • Без заголовка такие заменяющие доставки откладываются, чтобы не создать дубликат в старом импортёре. Остальные доставки выдаются как обычно.

Рекомендуемый алгоритм upsert

  1. Найдите в CMS запись с сохранённым article_identity.
  2. Нашли — обновите заголовок, описание, текст, обложку и разметку.
  3. Не нашли — создайте запись и сохраните в ней article_identity (например, в служебном поле).
  4. Если нашлось несколько подходящих записей — не создавайте новую и не отправляйте accepted: нужна ручная проверка.

Не нашли ответ? Напишите в поддержку из панели — укажите проект и что вы видите на экране.