Перейти к содержанию

Пакетная отправка уведомлений (Notify batch)

POST https://api.pushwoosh.com/messaging/v2/notify/batch

Отправляет несколько сообщений за один вызов. Каждый элемент является независимым Notify: он проверяется точно так же, как и отдельный запрос Notify, и получает собственный результат.

Структура запроса

Anchor link to
Структура
{
"items": [
{
"item_id": "caller-defined-id",
"request": { ... }
}
]
}
ПолеТипОписание
itemsarray of NotifyBatchItemОбязательно, от 1 до 500 записей (лимит настраивается на сервере). Элементы обрабатываются одновременно; результаты возвращаются в порядке запроса независимо от этого.

NotifyBatchItem

Anchor link to
ПолеТипОписание
item_idstringНеобязательный идентификатор корреляции, предоставляемый вызывающей стороной, возвращается в соответствующем результате. В остальном Pushwoosh его не использует.
requestNotifyRequestТело запроса такое же, как у одиночного вызова Notify — segment или transactional, включая transaction_id. Обязательно.

Пример

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify/batch \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"item_id": "order-1001",
"request": {
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-123"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"transaction_id": "order-1001-shipped"
}
}
},
{
"item_id": "order-1002",
"request": {
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-456"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"transaction_id": "order-1002-shipped"
}
}
}
]
}'

Ответ

Anchor link to
{
"results": [
{
"item_id": "order-1001",
"index": 0,
"result": {
"message_code": "XXXXX-XXXXX-XXXXX",
"unknown_identifiers": []
}
},
{
"item_id": "order-1002",
"index": 1,
"error": {
"code": 3,
"message": "invalid argument",
"reason": "EmptySchedule",
"domain": "api.pushwoosh.com"
}
}
],
"succeeded": 1,
"failed": 1
}
ПолеТипОписание
resultsarray of NotifyBatchResultОдна запись для каждого запрошенного элемента, в порядке запроса.
succeededintegerКоличество элементов, вернувших результат.
failedintegerКоличество элементов, вернувших ошибку.

NotifyBatchResult

Anchor link to
ПолеТипОписание
item_idstringПовторение item_id из элемента запроса.
indexintegerПозиция элемента в запросе, начиная с нуля. Используйте это для сопоставления результатов, если item_id был оставлен пустым.
resultobjectУстанавливается, когда элемент обработан успешно — та же структура, что и у ответа на одиночный вызов Notify: message_code и unknown_identifiers.
errorNotifyBatchErrorУстанавливается, когда элемент не был обработан.

NotifyBatchError

Anchor link to
ПолеТипОписание
codeintegerКод состояния gRPC (google.rpc.Code), например, 3 для INVALID_ARGUMENT.
messagestringСообщение об ошибке для разработчика, на английском языке.
reasonstringКраткое имя состояния — то же значение, которое вернул бы одиночный вызов Notify, например, EmptySchedule.
domainstringДомен ошибки, api.pushwoosh.com.

Ошибки

Anchor link to

Ошибки используют стандартную обертку ошибок gRPC-Gateway: { "code": ..., "message": ..., "details": [...] }. Это ошибки на уровне обертки, которые приводят к сбою всего запроса — сбой отдельного элемента вместо этого создает ошибку error для каждого элемента в results[] (см. NotifyBatchError выше), а не одну из этих.

HTTP-статусУсловие
400items пуст.
400items содержит больше записей, чем лимит, настроенный на сервере (по умолчанию 500).
400В одном из элементов отсутствует request.

Пример

Отправка 501 элемента при лимите в 500 вернет HTTP 400:

{
"code": 3,
"message": "items must not exceed 500 entries, got 501",
"details": []
}

Связанные материалы

Anchor link to