article_id, delivery_id, article_identity, capability и защита от дублей
delivery_id — номер версии для доставки, article_id и article_identity — постоянная статья. Записывайте статью в CMS по article_identity и передавайте заголовок X-SerpJet-Capabilities: stable-article-identity-v1, чтобы получать все доставки без риска дублей.
Содержание
Три идентификатора
| Поле | Что обозначает | Как использовать |
|---|---|---|
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
- Найдите в CMS запись с сохранённым
article_identity. - Нашли — обновите заголовок, описание, текст, обложку и разметку.
- Не нашли — создайте запись и сохраните в ней
article_identity(например, в служебном поле). - Если нашлось несколько подходящих записей — не создавайте новую и не отправляйте
accepted: нужна ручная проверка.
Не нашли ответ? Напишите в поддержку из панели — укажите проект и что вы видите на экране.