Obtenha endereço de e-mail de um usuário via API

Existe alguma maneira de obter o endereço de e-mail atual de um usuário via API?

Nosso caso de uso é o seguinte:

Permitimos que os usuários gerenciem suas informações do Discourse por meio do nosso site. Em geral, o Discourse é usado apenas como uma lista de e-mails e quase nenhum usuário visita o site real do Discourse. Gostaria de poder mostrar ao usuário o endereço de e-mail atual que o Discourse está usando, para que ele possa verificar se precisa ser alterado.

Conseguimos fazer isso com todos os outros campos, exceto o e-mail.

Antigamente, havia um endpoint de API users/{username}/emails, mas parece que ele não está mais disponível.

Olá,

GET /users/:username.json

exibirá o e-mail em dois casos:

  • o ID do usuário do titular da chave da API for o mesmo que o ID do usuário relacionado ao nome de usuário solicitado
  • o titular da chave da API for membro da equipe e o usuário solicitado for um usuário em staging

Saiba mais sobre isso no código:

Até onde sei, esse caminho de código não mudou recentemente.

É, mas isso não me ajuda. Todos os usuários já estão ativos e a chave de API do usuário não vai corresponder.

Esta solicitação funciona para mim:

curl "http://example.com/users/joffreyjaffeux/emails.json" \
     -H 'Api-Username: joffreyjaffeux' \
     -H 'Api-Key: xxx' \
     -H 'Content-Type: application/json; charset=utf-8' \

Mas, funciona se a URL for http://example.com/users/paulapostolos/emails.json?

Sim, deve funcionar para você e para outros usuários, desde que isso seja verdade:

  def can_check_emails?(user)
    is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
  end

Observe que fazê-lo acionará um registro de ação de equipe.

Isso funcionou… Eu tinha um código antigo que costumava funcionar (versão 1.4 mais ou menos) e que fazia a requisição como PUT e sem o .json no final. Eu modifiquei para GET, alterei a URL e agora está funcionando.

Obrigado pela ajuda!