Passer au contenu

Notification par lot

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

Envoie plusieurs messages en un seul appel. Chaque élément est un Notify indépendant : il est validé exactement comme une requête Notify autonome et obtient son propre résultat.

Structure de la requête

Anchor link to
Forme
{
"items": [
{
"item_id": "caller-defined-id",
"request": { ... }
}
]
}
ChampTypeDescription
itemstableau de NotifyBatchItemRequis, de 1 à 500 entrées (limite configurée par le serveur). Les éléments sont traités simultanément ; les résultats sont renvoyés dans l’ordre de la requête, quoi qu’il arrive.

NotifyBatchItem

Anchor link to
ChampTypeDescription
item_idstringID de corrélation optionnel fourni par l’appelant, renvoyé en écho dans le résultat correspondant. Non utilisé par Pushwoosh autrement.
requestNotifyRequestMême corps qu’un appel Notify unique — segment ou transactional, transaction_id inclus. Requis.
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
}
ChampTypeDescription
resultstableau de NotifyBatchResultUne entrée par élément demandé, dans l’ordre de la requête.
succeededintegerNombre d’éléments ayant renvoyé un résultat.
failedintegerNombre d’éléments ayant renvoyé une erreur.

NotifyBatchResult

Anchor link to
ChampTypeDescription
item_idstringÉcho de l’item_id de l’élément de la requête.
indexintegerPosition de base zéro de l’élément dans la requête. Utilisez ceci pour corréler les résultats lorsque item_id a été laissé vide.
resultobjectDéfini lorsque l’élément a réussi — même forme qu’une réponse Notify unique : message_code et unknown_identifiers.
errorNotifyBatchErrorDéfini lorsque l’élément a échoué.

NotifyBatchError

Anchor link to
ChampTypeDescription
codeintegerCode de statut gRPC (google.rpc.Code), par ex. 3 pour INVALID_ARGUMENT.
messagestringMessage d’erreur destiné aux développeurs, en anglais.
reasonstringNom de statut court — la même valeur qu’un appel Notify unique renverrait, par ex. EmptySchedule.
domainstringDomaine de l’erreur, api.pushwoosh.com.

Les erreurs utilisent l’enveloppe d’erreur standard de gRPC-Gateway : { "code": ..., "message": ..., "details": [...] }. Ce sont des erreurs au niveau de l’enveloppe qui font échouer toute la requête — un élément individuel en échec produit une error par élément dans results[] à la place (voir NotifyBatchError ci-dessus), pas l’une de celles-ci.

Statut HTTPCondition
400items est vide.
400items contient plus que la limite configurée par le serveur (500 par défaut).
400Il manque request à l’un des éléments.

Exemple

L’envoi de 501 éléments lorsque la limite est de 500 renvoie un statut HTTP 400 :

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

Sujets connexes

Anchor link to