Как получить значение user_api_keys через API

Я не думаю, что возможно получить значение ключа API через сам API. Discourse не сохраняет незашифрованные ключи API в базе данных. Даже если бы вы могли получить зашифрованное значение, не было бы способа расшифровать его в вашем приложении.

Можете ли вы немного подробнее объяснить ваш случай использования? Если ключ API пользователя уже сгенерирован для пользователя, мне неясно, почему им потребуется одобрять авторизацию во второй раз.

Редактирование: возможно использовать Административный ключ API для генерации ключа API для пользователя. Некоторые подробности об этом здесь: Generate User Api Key Without User Approval - #2 by simon

Повторно перечитав свой пост, я вижу, что не объяснил, как была установлена переменная $json для запроса. Самый простой способ понять, как структурировать данные, — сделать запрос на генерацию одного ключа API пользователя с нужными вам областями доступа через интерфейс Discourse, а затем посмотреть значение полезной нагрузки запроса, отправляемой при запросе к /admin/api/keys: