Saltar al contenido

Notificar en lote

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

Envía varios mensajes en una sola llamada. Cada elemento es una Notify independiente: se valida exactamente igual que una solicitud Notify autónoma y obtiene su propio resultado.

Estructura de la solicitud

Anchor link to
Shape
{
"items": [
{
"item_id": "caller-defined-id",
"request": { ... }
}
]
}
CampoTipoDescripción
itemsarray de NotifyBatchItemRequerido, de 1 a 500 entradas (límite configurado por el servidor). Los elementos se procesan de forma concurrente; los resultados se devuelven en el orden de la solicitud independientemente de ello.

NotifyBatchItem

Anchor link to
CampoTipoDescripción
item_idstringID de correlación opcional proporcionado por el llamante, devuelto en el resultado correspondiente. Pushwoosh no lo utiliza para ningún otro fin.
requestNotifyRequestMismo cuerpo que una llamada Notify única — segment o transactional, transaction_id incluido. Requerido.
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"
}
}
}
]
}'
{
"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
}
CampoTipoDescripción
resultsarray de NotifyBatchResultUna entrada por cada elemento solicitado, en el orden de la solicitud.
succeededenteroNúmero de elementos que devolvieron un resultado.
failedenteroNúmero de elementos que devolvieron un error.

NotifyBatchResult

Anchor link to
CampoTipoDescripción
item_idstringEco del item_id del elemento de la solicitud.
indexenteroPosición del elemento en la solicitud, basada en cero. Úsalo para correlacionar resultados cuando item_id se dejó vacío.
resultobjetoSe establece cuando el elemento tuvo éxito — misma forma que una respuesta Notify única: message_code y unknown_identifiers.
errorNotifyBatchErrorSe establece cuando el elemento falló.

NotifyBatchError

Anchor link to
CampoTipoDescripción
codeenteroCódigo de estado gRPC (google.rpc.Code), p. ej. 3 para INVALID_ARGUMENT.
messagestringMensaje de error para el desarrollador, en inglés.
reasonstringNombre corto del estado — el mismo valor que devolvería una llamada Notify única, p. ej. EmptySchedule.
domainstringDominio del error, api.pushwoosh.com.

Los errores utilizan el sobre de error estándar de gRPC-Gateway: { "code": ..., "message": ..., "details": [...] }. Estos son errores a nivel de sobre que hacen que falle toda la solicitud; un elemento individual que falla produce un error por elemento en results[] en su lugar (ver NotifyBatchError arriba), no uno de estos.

Estado HTTPCondición
400items está vacío.
400items tiene más del límite configurado por el servidor (500 por defecto).
400A uno de los elementos le falta request.

Ejemplo

Enviar 501 elementos cuando el límite es 500 devuelve HTTP 400:

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

Relacionado

Anchor link to