Руководство разработчика ОРД

Документ содержит описание работы систем ОРД, а также порядок действий, необходимый для интеграции по API. Документ предназначен для разработчиков клиентского прикладного программного обеспечения (ППО). Документ также может быть полезен всем пользователям ОРД для лучшего понимания логики работы системы ОРД.

Документ содержит описание работы систем ОРД, а также порядок действий, необходимый для интеграции по API. Документ предназначен для разработчиков клиентского прикладного программного обеспечения (ППО). Документ также может быть полезен всем пользователям ОРД для лучшего понимания логики работы системы ОРД.

Выберите раздел в навигации слева, чтобы просмотреть конкретный раздел документа.

Предназначение документа и целевая аудитория#

Данный документ детально описывает работу систем ОРД, а также действия, необходимые для работы с ОРД по API.
Целевой аудиторией документа являются, в первую очередь, разработчики клиентского прикладного программного обеспечения (ППО).
Документ также может быть полезен пользователям ОРД для лучшего понимания логики работы ОРД.
 

Термины и определения

Сокращение

Расшифровка

Значение

ОРД

Оператор рекламных данных

В данном документе, если явно не указано иначе, ОРД от SberAds

ЕРИР

Единый Реестр Интернет Рекламы

Информационная система, разработанная ГКРЧ и эксплуатируемая РКН, предназначенная для регистрации информации о рекламе

Объект

Объект рекламной информации

Совокупность данных, описывающих сущность из предметной области ОРД. Примеры типов объектов: Организация (контрагент), Договор, Креатив, Акт

РС

Рекламное сообщение

 

Erid

Единый идентификатор рекламного объявления (aka токен или маркер)

 

ППО

Прикладное программное обеспечение

 

РМ

Рекламные материалы

 

SMN

Simple Message Notification

Сервис Sbercloud Advanced, предназначенный для распространения сообщений

Основные операции, производимые ОРД#

При работе по API Клиенту доступна следующая функциональность:
 
  • Регистрация объектов
  • Модификация ранее зарегистрированных объектов
  • Получение (выгрузка) зарегистрированных объектов
  • Регистрация новых и модификация данных по существующим объектам в ЕРИР
  • Загрузка медиафайлов креативов в хранилище ОРД
  • Назначение и выдача маркера (токена)
  • Получение статуса объектов
  • Возобновление незавершенного процесса регистрации или обновления объекта
Детали по вызовам API и по возвращаемой дополнительно информации описаны в Руководстве по API ОРД
 
Регистрация объектов
 
Регистрация объекта осуществляется путем вызова HTTP метода POST для соответствующего типа объекта.
Регистрация, как правило, является продолжительным по времени процессом, происходящим по одному из определенных сценариев. Регистрация включает в себя:
 
  • Предварительную валидацию объекта и его запись (регистрацию) в хранилище ОРД;
  • Только для креативов: загрузку медиафайлов в хранилище ОРД;
  • Регистрацию объекта в ЕРИР.

Модификация объектов

Модификация объекта осуществляется путем вызова HTTP метода PUT для соответствующего типа объекта, с указанием идентификатора ранее зарегистрированного объекта.
Модификация, как правило, является продолжительным по времени процессом, происходящим по одному из определенных сценариев. Модификация включает в себя:
 
  • Предварительную валидацию объекта и его модификацию в хранилище ОРД
  • Только для креативов и только при необходимости: загрузку медиафайлов в хранилище ОРД
  • Модификацию объекта в ЕРИР

Получение (выгрузка) зарегистрированных объектов

Выгрузка объекта осуществляется путем вызова HTTP метода GET для соответствующего типа объекта с указанием идентификатора ранее зарегистрированного объекта.
Выгрузка данных производится из хранилища ОРД.
 
Регистрация новых и модификация данных по существующим объектам в ЕРИР
 
Передача данных в ЕРИР осуществляется как один из шагов процесса регистрации или обновления объекта одного из верхнеуровневых типов.
Попытка регистрации в ЕРИР может быть неуспешной, например из-за влияния сетевых проблем. В этом случае производится определенное количество повторных попыток с задержкой во времени. Однако, в ряде случаев, если ОРД распознает неуспешную регистрацию как следствие перманентной ошибки, процесс завершается незамедлительно.

Загрузка медиафайлов креативов в хранилище ОРД

Загрузка медиафайлов осуществляется как один из шагов процесса регистрации или обновления объекта, имеющего тип Креатив и ссылки в поле creativeData.mediaUrl
Если рекламное объявление, демонстрируемое в Интернете, построено с использованием внешних медиафайлов (таких, как изображения, видеоролики), которые невозможно разместить в полях записи creativeData, то эти файлы загружаются во внутреннее хранилище ОРД при помощи следующего процесса:
 
  • Клиент
– размещает медиафайлы в Интернете и делает их доступными для ОРД на время регистрации креативов
– регистрирует креатив при помощи вызова API POST /creatives. Ссылки на размещенные медиафайлы должны быть переданы в поле mediaUrl объектов CreativeData.
 
  • ОРД
– в процессе регистрации креатива загружает медиафайлы в свое внутреннее хранилище
– заменяет ссылки mediaUrl объектов CreativeData на ссылки, ведущие во внутреннее хранилище ОРД
– помечает медиаданные креатива как загруженные
 
  • Клиент
– может изъять размещенные ранее в Интернете для регистрации в ОРД медиафайлы из размещения
Попытка загрузки медиафайлов может быть неуспешной, например из-за влияния сетевых проблем. В этом случае производится определенное количество повторных попыток с задержкой во времени.
 
ВАЖНО!!

- Публичный доступ во внутреннее хранилище ОРД закрыт.

- При обновлении данных допускается указывать внутреннюю ссылку, которая была ранее создана для данного креатива. Не допускается указывать ссылки, созданные в других креативах.

Назначение и выдача маркера (токена)

Маркер РС (токен) возвращается «в обмен» на успешно зарегистрированный объект с типом Креатив вместе со статусной информацией.
 
Маркер возвращается только в ситуации, когда состояние объекта позволяет это сделать. 
Как правило: 
 
  • Для успешно зарегистрированного объекта (в статусе APPROVED) маркер всегда присутствует в статусной информации;
  • В ряде случаев для ускорения процесса маркер может появится ранее, например, с началом регистрации в ЕРИР, а не по ее окончании.

Получение статуса объектов

Состояние каждого из объектов ОРД описывается статусными переменными. Детали описаны в разделе Статусная модель.
 
Переменные статуса передаются клиенту любым из следующих способов:
 
  • В заголовках HTTP в ответах на запросы любых типов к объектам ОРД
  • В теле ответа на запросы:    
POST, PUT и GET /{entityType}/{entityId}/status
Поддержка анализа статусной информации является обязательной на стороне Клиента.

Возобновление незавершенного процесса регистрации или обновления объекта

Если процесс регистрации или модификации данных по объекту идет по асинхронному (отложенному) сценарию, и находится в отложенном (неактивном) состоянии, возможно принудительное возобновление (активация) процесса с точки его останова, при помощи метода:
POST /{entityType}/{entityId}/sync
Использование данного метода не является обязательным. Если его не использовать, процесс будет завершен автоматически внутренним планировщиком ОРД.
 
При использовании данного метода возможна попытка активации по уже активному в данный момент процессу. При этом будет возвращена индикация ошибки с сообщением о невозможности установить блокировку объекта.

Статусная модель#

Основной статус

Для каждого существующего в ОРД объекта определены следующие значения статуса state:
 

Тип статуса

Значение статуса

PENDING

Объект зарегистрирован в ОРД, но пока не зарегистрирован в ЕРИР (в процессе регистрации)

APPROVED

Объект зарегистрирован в ОРД и в ЕРИР

DECLINED

Объект зарегистрирован в ОРД, но отклонен ЕРИР

ACCEPTED

Объект принят в ОРД. отправлен на проверку в ЕРИР

DELETING 

Объект находится в процессе удаления

 
Статус загрузки медиаданных
 
Для объектов типа Креатив определена дополнительная переменная статуса media state, которая может принимать одно из следующих значений:
 

Тип статуса

Значение статуса

PENDING

Медиаданные ожидают загрузки или в процессе загрузки

LOADED

Медиаданные загружены в хранилище ОРД

ERROR

Не удалось загрузить медиаданные в хранилище

Сценарии регистрации и модификации объектов#

При регистрации и обновлении данных возможны два базовых сценария, для случая успешной операции:
 

Сценарий

Значение

Синхронная обработка

Клиент осуществляет REST запрос на регистрацию (POST) или модификацию (PUT) данныхПолный цикл регистрации происходит синхронно в рамках одного вызова API, включаязагрузку медиафайлов (при необходимости)регистрацию объекта в ЕРИРУправление возвращается в клиентское приложение с HTTP статусом 201 CREATED (POST) или 200 OK (PUT)

Асинхронная обработка

Клиент осуществляет REST запрос на регистрацию (POST) или модификацию (PUT) данныхВ рамках синхронного вызова происходит один или несколько шагов регистрации, последний из которых завершается с ошибкойУправление возвращается в клиентское приложение с HTTP статусом 202 ACCEPTEDОРД периодически (по таймеру) возобновляет незавершенный процесс регистрации, начиная с точки остановаПроцесс регистрации завершаетсяКлиент получает статус и сопутствующие атрибуты, например маркер (Erid), при помощи запроса Status

Выбор сценария

 
Сценарий выбирается автоматически на стороне ОРД
  • Синхронная обработка обычно используется по умолчанию.
  • В случае нештатных ситуаций синхронный процесс завершается и переключается в асинхронный. К таким ситуациям относятся:
– Недоступность ЕРИР
– Недоступность ЕРИР

Диаграмма сценариев (для случая регистрации нового объекта)

При регистрации нового объекта в ОРД регистрация его в ЕРИР осуществляется как один из шагов процесса:
  • В случае успеха или перманентной ошибки объект переходит в статус APPROVED или DECLINED соответственно и обработка данного объекта в системе завершается (в общем случае до модификации объекта).
  • В прочих случаях объект остается в статусе PENDING и производится определенное число повторных попыток
  • При исчерпании количества повторных попыток объект переходит в статус DECLINED
При загрузке медиаданных (для объектов с типом Креатив).
 
  • До завершения успешной загрузки медиаданных отправка данных в ЕРИР производиться не будет и сущность будет иметь статус PENDING.
  • Загрузка медиаданных происходит в соответствии со статусной моделью media-state (см. выше).
– После инициализации загрузки данных в хранилище media-state перейдет в состояние PENDING.
– В случае успешной загрузки media-state примет значение LOADED.
– В случае возникновения перманентной ошибки media-state примет значение ERROR.
– В случае если ошибка не перманентная, будет предпринято еще определенное количество попыток повторной загрузки.
– При исчерпании количества повторных попыток media-state примет значение ERROR.
 
Типовые параметры повтора (не являются обязательными на стороне ОРД; реальные параметры могут отличаться в зависимости от Клиента и настроек системы).
 

Алгоритм тайминга

Exponential backoff

Задержка первой повторной попытки

1ч

Количество попыток

5

Обязательная к реализации функциональность#

Обязательный минимум функционала должен быть реализован в приложении Клиента, которое взаимодействует с ОРД. Обязательный минимум составляет:
 
  • Передача данных в ОРД
– Регистрация объектов (метод POST);
– По выбору, одно из:
 
  • Периодический опрос статуса по каждому объекту, регистрация которого не завершена (GET /{entityType}/{entityId}/status)
  • Получение и анализ уведомлений об изменении статуса через сервис Simple Message Notification (SMN)
  • Периодическое возобновление процесса по каждому объекту, регистрация которого не завершена
  • Получение маркера креатива (если регистрируются креативы)
– Передается в статусной информации
 
  • Анализ нештатных и ошибочных ситуаций и совершение по ним определенных действий
– Отклонение запроса на стороне ОРД
– Отклонение запроса на регистрацию на стороне ЕРИР
– Ошибка при загрузке файлов медиа

Что не следует делать#

Не следует полагаться на возвращение токена синхронно в ответ на запрос на регистрацию креатива.
 
  • ОРД оставляет за собой право отключить синхронный сценарий (см. Сценарии регистрации и модификации объектов) для креативов, также как и для других объектов, в зависимости от нагрузки на систему и договоренностей с ЕРИР;
  • Отказ от объекта при отсутствии токена в синхронном ответе и повторная регистрация напрямую ведет к дублированию данных, что является плохой практикой и в общем случае не поддерживается. Это может быть предметом вопросов со стороны оператора ЕРИР, а также может приводить к завышенной сумме в счете за услугу;

Типовая схема работы клиентского приложения при передаче данных в ОРД#

Регистрация нового объекта

Для каждого объекта:
 
  • Вызвать метод POST /{entityType}
  • Проанализировать response code
– Если 201 CREATED - зарегистрировать успех и выйти. Для креативов также зарегистрировать маркер.
– Если 202 ACCEPTED - отложить
– Если 400 - зарегистрировать ошибку и выйти
 
Для каждого отложенного объекта - повторять в цикле, с задержкой на 2 ч. к предыдущей попытке:
 
  • Вызвать метод GET /{entityType}/{entityId}/status
  • Проанализировать значение state в ответе
– APPROVED - зарегистрировать успех и выйти. Для креативов также зарегистрировать маркер
– PENDING - отложить
– DECLINED - зарегистрировать ошибку и выйти

Модификация ранее созданного объекта

Для каждого объекта:
 
  • Вызвать метод PUT /{entityType}/{entityId}
  • Проанализировать response code
– Если 200 OK - зарегистрировать успех и выйти
– Если 202 ACCEPTED - отложить
– Если 400 - зарегистрировать ошибку и выйти
 
Для каждого отложенного объекта - повторять в цикле, с задержкой на 2 ч. к предыдущей попытке:
 
  • Вызвать метод GET /{entityType}/{entityId}/status
  • Проанализировать значение state в ответе
– APPROVED - зарегистрировать успех и выйти. Для креативов также зарегистрировать маркер
– PENDING - отложить
– DECLINED - зарегистрировать ошибку и выйти

Нештатные и ошибочные ситуации при работе с ОРД#

При работе возможны различные типы таких ситуаций, из которых самыми распространенными являются следующие:
 

Ситуация

Признаки

Что делать

Отклонение запроса на стороне ОРД

ОРД возвращает ответ с кодом 400

Скорректировать запрос в соответствии с требованиями API ОРД

Ошибка при загрузке файлов медиа

status: DECLINEDmediaStatus: ERRORmediaError:

Исправить ошибку на стороне сервера отдачи медиафайлов, либо исправить креатив (при помощи PUT), указав корректный URL

Ошибка при регистрации в ЕРИР

status: DECLINEDerirError:

Если возможно, исправить креатив (при помощи PUT), исходя из сообщения об ошибке; в противном случае связаться с ТП ОРД

Рекомендации по языкам программирования и библиотекам#

Клиент может использовать любой язык программирования и любые библиотеки на свой выбор при работе с ОРД, при условии поддержки ими требуемой для реализации API ОРД функциональности, а именно:
 
  • Осуществление вызовов HTTP REST GET, POST, PUT, опционально HEAD
  • Прием и передача JSON
  • Анализ HTTP статус кода ответа
  • Возможность разбора ответа в формате JSON при любом статус-коде
  • Возможность анализа заголовков в ответе HTTP
Если Клиент планирует получать уведомления через сервис SMN, следует обратить внимание на наличие или отсутствие SDK для интеграции с SMN для выбранного языка программирования.
ОРД рекомендует следующие языки программирования для разработки:
 

ЯП

Библиотека

SDK для SCA

Python

requests

https://github.com/huaweicloud/huaweicloud-sdk-python-v3

Go

net.http

https://github.com/huaweicloud/huaweicloud-sdk-go-v3

Аутентификация и авторизация в API#

Аутентификация и авторизация в API осуществляются, как правило, при помощи токена.
Управление токенами (получение, удаление, временная блокировка) осуществляются в Личном Кабинете ОРД.
 
При осуществлении вызова токен (в примере ниже ABCDE.ZYXWV) указывается в HTTP заголовке Authorization:

API Authorisation header

Authorization: Bearer ABCDE.ZYXWV

Получение уведомлений через сервис Simple Message Notification#

Если приложение Клиента, взаимодействующее с ОРД, полностью или частично размещено в регионе SberCloud Advanced (ООО "Облачные технологии"), существует возможность настроить асинхронное получение уведомлений об изменении статуса клиента, в том числе получение маркера креатива, через сервис Simple Message Notification. Для этого:
 
  • У Клиента должен быть подключен сервис SMN
  • На стороне Клиента должен быть выделен SMN topic для сообщений от ОРД
  • К этому SMN topic должен быть дан доступ на публикацию сообщений технологической учетной записи ОРД
Уведомления имеют формат JSON и соответствуют объекту Status (см. Руководство по API).
 
Настройка получения уведомлений в Simple Message Notification производится через техническую поддержку ОРД. Продолжительность выполнения настройки обычно составляет несколько рабочих дней.

Имя и тип файла#

В ссылке или ответе сервера должна быть информация об имени и типе загружаемого файла:
 
  • Имя файла формируется из данных HTTP заголовка Content-Disposition, либо из суффикса URL
  • Тип файла формируется из HTTP заголовка Content-Type, либо из суффикса имени файла

Поддерживаемые форматы файлов#

Медиаданные, размещаемые по ссылке CreativeData.mediaUrl, должны соответствовать одному из следующих форматов:
 
Стандартные форматы - графика, аудио, видео
 

MIME type

Image type

image/apng

Animated Portable Network Graphics (APNG)

image/avif

AV1 Image File Format (AVIF)

image/gif

Graphics Interchange Format (GIF)

image/jpeg

Joint Photographic Expert Group image (JPEG)

image/png

Portable Network Graphics (PNG)

image/svg+xml

Scalable Vector Graphics (SVG)

image/webp

Web Picture format (WEBP)

MIME type

Audio or video type

audio/waveaudio/wavaudio/x-wav audio/x-pn-wav

An audio file in the WAVE container format. The PCM audio codec (WAVE codec "1") is often supported, but other codecs have limited support (if any).

audio/webm

An audio file in the WebM container format. Vorbis and Opus are the codecs officially supported by the WebM specification.

video/webm

A video file, possibly with audio, in the WebM container format. VP8 and VP9 are the most common video codecs; Vorbis and Opus the most common audio codecs.

audio/ogg

An audio file in the Ogg container format. Vorbis is the most common audio codec used in such a container; however, Opus is now supported by Ogg as well.

video/ogg

A video file, possibly with audio, in the Ogg container format. Theora is the usual video codec used within it; Vorbis is the usual audio codec, although Opus is becoming more common.

application/ogg

An audio or video file using the Ogg container format. Theora is the usual video codec used within it; Vorbis is the usual audio codec.

Составные HTML креативы

Составные HTML передаются упакованными в архиве .zip.
Внутри файла должны быть все компоненты креатива. Не допускается внешних ссылок на компоненты креатива.

Видео креативы (VAST и VPAID)

При загрузке VAST:
 
  • Ссылка mediaUrl должна указывать на объект в формате VAST или VAST Wrapper
  • При загрузке VAST итеративно загружаются компоненты креатива, которые описывает VAST (непосредственно сами ролики или VPAID компоненты), поэтому все они также должны быть доступны для ОРД на время регистрации креативаВведите текст
decor--1decor--2decor--3decor--4decor--5