Как разграничить доступ к полям типов в GraphQL API?
Есть GraphQL API с определенным набором типов, запросами и мутациями.
Есть аутентификация: с API работают клиенты из разных групп пользователей.
Есть авторизация: у каждой группы есть ограничения на поля типов, которые они могут читать (например, администраторы могут читать все поля типа User, модераторы — email и nickname, а обычные пользователи — только nickname).
Как "правильнее" всего по идеологии GraphQL реализовать эти ограничения?
Отдавать разным группам разные схемы API с разным набором полей в типах?
Держать единую схему, но при выполнении запросов отдавать в недоступных полях null'ы?
Вводить раздельные типы со своими полями для каждой группы?
Вопрос больше теоретический; интересно, кто как поступает, какие плюсы и подводные камни есть.