Операции над массивом объектов
На вход всех методов, изменяющих данные, подается массив объектов, для которых требуется выполнить операцию.
Элементам входного массива соответствуют элементы выходного массива, следующие в том же порядке. Каждый элемент входного массива содержит:
- в случае успешного выполнения операции — идентификатор созданного/измененного/удаленного объекта;
- в случае если операция выполнена с какими-либо особенностями — идентификатор объекта и массив Warnings;
- в случае если операция не выполнена вследствие ошибки — массив Errors (и, возможно, массив Warnings); идентификатор объекта не возвращается.
Ошибка при выполнении операции с одним из объектов не влияет на успешность выполнения операции с остальными объектами. Исключение: отсутствие обязательного параметра для одного из объектов приравнивается к неверному формату запроса и вызывает ошибку обработки всего запроса (а не выполнения отдельной операции).
Массивы Errors и Warnings содержат одну или несколько структур ExceptionNotification:
Параметр | Тип | Описание |
Структура ExceptionNotification | ||
---|---|---|
Code | int | Числовой код ошибки или предупреждения. |
Message | string | Текст сообщения об ошибке или предупреждения. |
Details | string | Подробное описание ошибки или предупреждения. |
Параметр | Тип | Описание |
Структура ExceptionNotification | ||
---|---|---|
Code | int | Числовой код ошибки или предупреждения. |
Message | string | Текст сообщения об ошибке или предупреждения. |
Details | string | Подробное описание ошибки или предупреждения. |
Коды и описания ошибок и предупреждений перечислены в разделе Ошибки и предупреждения.
Как обрабатывать ошибки
Наличие массива ошибок Errors в ответе означает, что операция не выполнена.
Приложение не должно пытаться повторить операцию, которая завершилась ошибкой.
Приложение должно протоколировать ошибки. Рекомендуется также отправлять ошибки на почту или в систему мониторинга.
Необходимо анализировать ошибки и вносить изменения в приложение, чтобы предотвратить повторение ошибок.
Обратите внимание, что за ошибку выполнения операции списывается увеличенное количество баллов по сравнению с успешной операцией.
Пример ошибки
Во входном массиве два объявления, которые требуется добавить. Первая операция добавления выполнена успешно, возвращен идентификатор объявления. Вторая операция завершилась ошибкой.
- Запрос
-
{ "method": "add", "params": { "Ads": [{ "AdGroupId": 1234567, "TextAd": { "Text": "Слоны всех пород. Сертифицированный питoмник", "Title": "Купи слона!", "Href": "http://exotic-farm.com/elefants", "Mobile": "NO" } }, { "AdGroupId": 1234567, "TextAd": { "Text": "Носороги с доставкой. Весенняя распродажа", "Title": "Купи носорога!", "Mobile": "NO" } }] } }
- Ответ
-
{ "result": { "AddResults": [{ "Id": 7654321 }, { "Errors": [{ "Code": 6000, "Message": "Неконсистентное состояние объекта", "Details": "В объявлении должна быть указана или визитка или основная ссылка" }] }] } }
Как обрабатывать предупреждения
Наличие массива предупреждений Warnings и идентификатора объекта в ответе означает, что операция выполнена успешно. Приложение может продолжать работу.
Приложение должно протоколировать предупреждения. Рекомендуется также отправлять предупреждения на почту или в систему мониторинга.
- Необходимо анализировать предупреждения и вносить изменения в приложение, чтобы предотвратить повторение предупреждений.
Пример предупреждения
Во входном массиве два объявления, которые требуется остановить. Для первой операции остановки выдано предупреждение, поскольку объявление уже было остановлено ранее.
- Запрос
-
{ "method": "suspend", "params": { "SelectionCriteria": { "Ids": [7654300, 7654321] } } }
- Ответ
-
{ "result": { "SuspendResults": [{ "Id": 7654300, "Warnings": [{ "Code": 10200, "Message": "Объявление уже остановлено" }] }, { "Id": 7654321 }] } }
Дубликаты id
Если в одном вызове метода update, set или delete содержится несколько объектов с одинаковым идентификатором, то для всех этих объектов операция не выполняется и возвращается ошибка. Остальные объекты в запросе обрабатываются обычным образом.
Если в одном вызове метода suspend, resume, moderate, archive, unarchive содержится несколько объектов с одинаковым идентификатором, операция выполняется, но для повторяющихся идентификаторов возвращается предупреждение.