Подписка несёт «сигнал» (идентификаторы + минимальный контекст), а не данные:
получив событие, клиент дочитывает детали авторизованным query. Персональные
события сервер адресует по аккаунту из JWT соединения (чужое в канал не
попадает); события каталога (остаток/публикация) приходят широковещательно
всем подписчикам кооператива.
Union MarketplaceEvent дискриминируется по __typename; выбирай поля
нужного типа через ... on.
Внимание: поля status событий НЕ селектируются. У каждого события свой
enum-статус, а правило GraphQL SameResponseShape запрещает одно имя ответа
с разными типами даже в разных ... on-фрагментах union'а — сервер
отклоняет весь документ на валидации, и подписка молча не открывается
(инцидент 2026-06-10). Статус клиенту и не нужен: по сигналу он дочитывает
состояние авторизованным query. Понадобится статус в payload — алиасить
уникально (order_status: status и т.п.), не возвращать имя status.
Realtime-канал событий пайщика в Столе заказов.
Подписка несёт «сигнал» (идентификаторы + минимальный контекст), а не данные: получив событие, клиент дочитывает детали авторизованным query. Персональные события сервер адресует по аккаунту из JWT соединения (чужое в канал не попадает); события каталога (остаток/публикация) приходят широковещательно всем подписчикам кооператива.
Union
MarketplaceEventдискриминируется по__typename; выбирай поля нужного типа через... on.Внимание: поля
statusсобытий НЕ селектируются. У каждого события свой enum-статус, а правило GraphQL SameResponseShape запрещает одно имя ответа с разными типами даже в разных... on-фрагментах union'а — сервер отклоняет весь документ на валидации, и подписка молча не открывается (инцидент 2026-06-10). Статус клиенту и не нужен: по сигналу он дочитывает состояние авторизованным query. Понадобится статус в payload — алиасить уникально (order_status: statusи т.п.), не возвращать имяstatus.