# WebSocket и push ## Состояние заказа Покупатель подключается к `/ws/orders/tracking/` по WSS. JWT можно передать заголовком `Authorization: Bearer `. Для клиентов без поддержки заголовков доступен параметр `access_token`; не записывайте такой URL в журналы. Неавторизованное или неактивное соединение закрывается с кодом `1008`. `order.changed` сообщает об изменении заказа и содержит `event_id`, `order_id` и `order_version`. Дубликаты события и старые версии игнорируются. После подключения, переподключения или пропуска версии перечитайте `/api/orders/roadmap/{order_id}/detail`. Событие не заменяет этот HTTP-снимок. `delivery.tracking.changed` сообщает об изменении доставки. Соответствующие ему push и WebSocket могут иметь одинаковые `notification_id` и `event_id`: объединяйте повторные запросы detail и не показывайте два оповещения об одном событии. Правила отображения отменённой доставки описаны в [сценарии заказа](catalog-orders.md). Для сборщика параметры событий и область очереди получаются через `/api/picker/realtime/metadata`; основное состояние восстанавливается HTTP-методами сессии и очереди. Разрыв соединения не подтверждает результат команды. ## Регистрация push После разрешения уведомлений зарегистрируйте текущую установку через `PUT /api/accounts/me/push-devices`. Поля см. в [справочнике](reference.md). `device_id` — локально сохранённый случайный UUID установки, а не аппаратный идентификатор устройства. При смене FCM-токена повторите PUT для той же установки. Передавайте окружение, соответствующее API; несовпадение возвращает `409`. При выходе или отключении push удаляйте только текущую установку через `DELETE /api/accounts/me/push-devices/{device_id}` до удаления токена авторизации. Данные push служат для выбора экрана и повторного чтения HTTP. Дедуплицируйте уведомления по `notification_id`, если он есть. После открытия уведомления сначала проверьте вход и получите доступный текущему пользователю заказ. Изображение в рекламном уведомлении необязательно. Если загрузка не удалась, покажите текстовое уведомление. Успешная регистрация устройства и приём сообщения FCM не доказывают видимое получение: отдельно проверяйте получение и переход по нажатию при открытом, фоновом и завершённом приложении на целевых устройствах.