Операции над массивом объектов
На вход всех методов, изменяющих данные, подается массив объектов, для которых требуется выполнить операцию.
Элементам входного массива соответствуют элементы выходного массива, следующие в том же порядке. Каждый элемент входного массива содержит:
- в случае успешного выполнения операции — идентификатор созданного, измененного или удаленного объекта;
- в случае если операция выполнена с какими-либо особенностями — идентификатор объекта и массив
Warnings
; - в случае если операция не выполнена вследствие ошибки — массив
Errors
(и, возможно, массивWarnings
); идентификатор объекта не возвращается.
Ошибка при выполнении операции с одним из объектов не влияет на успешность выполнения операции с остальными объектами. Исключение: отсутствие обязательного параметра для одного из объектов приравнивается к неверному формату запроса и вызывает ошибку обработки всего запроса (а не выполнения отдельной операции).
Массивы Errors
и Warnings
содержат одну или несколько структур ExceptionNotification
:
Параметр |
Тип |
Описание |
Структура ExceptionNotification |
||
|
int |
Числовой код ошибки или предупреждения. |
|
string |
Текст сообщения об ошибке или предупреждения. |
|
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 содержится несколько объектов с одинаковым идентификатором, операция выполняется, но для повторяющихся идентификаторов возвращается предупреждение.