Подписать браузер на персональные уведомлениятопик (Web Push)
Получите открытый ключ VAPID из клиентского JavaScript кода (код service worker, регистрируемый в браузере).
https://push.yandex.ru/v2/vapid_key
ответы сервера
Статус Сообщение Описание
200 BKex4K4HARfvI_vDIYXDgYNucCrqHLas609zWVkyoBCKcXV6I1ck8XRVFh3C-X-6ATQvEkYni3w8jDr_s8tRcf8 Запрос выполнен успешно.
500 InternalServerError Внутренняя ошибка или рестарт сервера.

Используйте открытый ключ, чтобы получить у браузера JSON подписки (см. пример). Этот JSON нужно отправить в бэкенд вашего сервиса, который сделает запрос на подписку:
https://push.yandex.ru/v2/subscribe/webpush?service=&topic=&user=&client=&session=
Content-Type: application/x-www-form-urlencoded
subscription=&filter=&extra=&ttl=
Параметр Значение
service
user
topic
user
client
session
subscription
filter
extra
ttl

Параметр session служит идентификатором клиента при подписке и отписке. Вызов с тем же значением session и другой подпиской (параметр subscription) обновит данные существующей подписки.

Таким образом, в качестве session подойдёт любая строка, уникально идентифицирующая браузер. Если ничего подходящего под рукой нет, можно сгенерировать session, например, как хеш от строки JSON подписки (subscription) и записать в хранилище браузера для последующего использования. Можно использовать md5(subscription).

Также ознакомьтесь с примером использования Web Push. Параметр user пока игнорируется, в дальнейшем будет использован, чтобы удалить подписку после разлогина пользователя (если user - это паспортный uid)

ответы сервера
Статус Сообщение Описание
200 {
  "subscription-id" : "ID подписки"
}
Запрос выполнен успешно. Для сервисов, зарегистрированных давно, возвращает просто "ОК". Чтобы изменить это поведение для вашего сервиса, напишите нам на рассылку.
400 BadRequest или описание ошибки Ошибка в запросе.
401 Unauthorized Некорректный или устаревший токен.
405 MethodNotAllowed Некорректный метод HTTP запроса.
429 TooManyRequests Клиент шлет слишком много запросов.
500 InternalServerError Внутренняя ошибка или рестарт сервера.