Отправить сообщение группе пользователей
Этот запрос выполняется с бэкенда вашего сервиса.
https://push.yandex.ru/v2/batch_send?event=&ttl=
(application/json)
{
  "recipients" : ,
  "payload" : ,
  "tags" : ,
  "keys" : ,
  "repack" : ,
  "experiments" : ,
  "subscriptions" :
}
Параметр Значение
service
event
ttl

ключи JSON в теле запроса
Ключ Описание
recipients
payload
tags
keys
repack
experiments
subscriptions

recipients - идентификаторы пользователей, либо конкретные подписки пользователей вида: {"id пользователя": "id подписки"}. Например:
[
  "user1", // во все подписки пользователя user1
  {"user2" : "sub1"} // в подписку sub1 пользователя user2
]

В recipients можно указать не больше 10000 получателей. Идентификаторы пользователей в массиве получателей не должны повторяться. Если вы указали несколько одинаковых идентификаторов в recipients, то будет обработан только один из них, а для остальных, его дублирующих, сервер вернет в results (см. ниже) ответ с кодом 409. Например, в следующем recipients:
[
  "user1",
  "duplicate1",
  {"duplicate1": "sub1"},
  {"duplicate2": "subA"},
  {"duplicate2": "subB"}
]
получатели {"duplicate1" : "sub1"} и {"duplicate2" : "subB"} не будут обработаны.

TTL сообщения передается во все внешние пуш-сервисы, при пакетной отправке через собственный WebSocket-транспорт TTL сообщения временно не учитывается.

Метод отвечает chunked-выдачей. Как только запрос разобран и проверен на корректность, сервер пришлет в заголовке TransitID – идентификатор сообщения, по которому можно будет найти логи в случае преждевременного разрыва соединения.

ответы сервера
Статус Сообщение Описание
200 Подробный отчет (см. ниже) Запрос выполнен успешно.
400 BadRequest или описание ошибки Ошибка в запросе.
401 Unauthorized Некорректный или устаревший токен.
405 MethodNotAllowed Некорректный метод HTTP запроса.
429 TooManyRequests Клиент шлет слишком много запросов.
500 InternalServerError Внутренняя ошибка или рестарт сервера.

пример отчета
{
  "results": [
    { "code": 200, "body": "OK" },
    { "code": 200, "body" : {"new_token": "..."} },
    { "code": 202, "body": "filtered" },
    { "code": 204, "body": "no subscriptions" },
    { "code": 205, "body": "gone" },
    { "code": 400, "body": "bad request" },
    { "code": 409, "body": {"duplicate": 5} },
    { "code": 429, "body": "..." },
    { "code": 500, "body": "..." },
    { "code": 502, "body": "..." },
    { "code": 504, "body": "..." },
    [{ "id": "9a4f5b5810c9fc3bac078", "code": 200, "body": "..." },
    { "id": "e4b914cd7906887b40a9f", "code": 205, "body": "gone" }]
  ]
}

Каждый элемент в массиве results соответствует элементу в массиве recipients. Элемент массива results - либо одиночный объект, содержащий поля code, body и (опционально) id, либо массив таких объектов (если получатель - пользователь, и у него на момент вызова batch_send несколько подписок в xiva). Каждый объект описывает статус отправки в одну подписку либо сообщает об отсутствии подписок у пользователя. id в объекте - идентификатор подписки.

расшифровка кодов в отчете
Код Описание
200 Отправленно. Ответ может включать новый пуш-токен.
202 Сообщение отклонено фильтром подписки (если задан).
204 Подписки отсутствуют.
205 Подписка удалена по ответу пуш-сервиса.
400 Некорректный запрос к транспорту или пуш-сервису.
403 Ошибка доступа к пуш-сервису (в случае мобильной подписки - отсутствующий или некорректный сертификат приложения).
409 Дубликат идентификатора пользователя.
422 Ошибка переупаковки.
429 Отклонено внутренним рейт-лимитером.
500 Ошибка транспорта.
502 Ошибка пуш-сервиса (с ответом сервиса). Для транспорта WebSocket возвращается при выпадении хоста, державшего соединение с клиентом.
504 Таймаут отправки в пуш-сервис.

соответствие кодов ответам FCM
Код Ответы FCM
205 InvalidRegistration, NotRegistered, MissingRegistration, MismatchSenderId.
400 Ошибки размера сообщения, содержимого или значения ttl.
502 DeviceresultRateExceeded, TopicsMessageRateExceeded, Unavailable, InternalServerError.