Casos em que admin/users.json?email=foobar ou admin/users/list/all.json?email=foobar retornam array vazio

Olá,

Conforme o título, quando executo os endpoints acima, recebo uma resposta [] no Postman. Quase todos [] se o usuário foobar não tiver um tópico criado, mas há um usuário que acabou de criar um tópico e a consulta acima responde com [] também, enquanto eu acho que ambos deveriam sempre retornar as informações dos usuários, pois essas informações básicas (IP registrado, nome de usuário) são informações dos usuários quando eles acabaram de criar suas contas.

A propósito, não consigo encontrar o endpoint admin/users.json em https://docs.discourse.org/. Ele foi removido e não deve mais ser usado. Obrigado!

1 curtida

Há também este endpoint /admin/users/list/{flag}.json que você pode usar.

Para filtrar por e-mail, você pode fazer:

http://localhost:4200/admin/users/list/active.json?filter=name%40example.com&show_emails=true&order=&asc=&page=1

Revisarei a documentação da API para esses endpoints e verei se precisamos fazer algumas atualizações.

Olá @blake,

E se eu ainda chamar admin/users.json, receberei um 404 ou posso continuar usando-o em meu código? Minha versão de instalação do Discourse é 3.4.0.beta2, o que significa que ainda posso usar admin/users.json?

O estranho é que não consigo encontrar admin/users/list/all.json?email em https://docs.discourse.org/.

Sim, está totalmente bem. Você pode continuar usando /admin/users.json. Ele usa exatamente o mesmo código subjacente de /admin/users/list/{flag}.json. Essa é provavelmente uma das razões pelas quais ainda não foi documentado.

Consigo fazer /admin/users.json retornar um usuário recém-criado sem nenhum tópico.

curl -i -sSL -X GET "http://localhost:4200/admin/users.json?email=982f145c7@example.com"  \
-H "Api-Key: ..."  \
-H "Api-Username: blake"

HTTP/1.1 200 OK

[
  {
    "id": 2731,
    "username": "982f145c7",
    "name": "982f145c7",
    "avatar_template": "/letter_avatar_proxy/v4/letter/9/46a35a/{size}.png",
    "active": true,
    "admin": false,
    "moderator": false,
    "last_seen_at": null,
    "last_emailed_at": null,
    "created_at": "2025-04-29T12:31:52.894Z",
    "last_seen_age": null,
    "last_emailed_age": null,
    "created_at_age": 103.259451,
    "trust_level": 1,
    "manual_locked_trust_level": null,
    "title": null,
    "time_read": 0,
    "staged": false,
    "can_be_deleted": true,
    "silence_reason": "",
    "days_visited": 0,
    "posts_read_count": 0,
    "topics_entered": 0,
    "post_count": 0
  }
]

Você precisa garantir que usa o endereço de e-mail exato ou obterá um array vazio como resultado.

Obrigado @blake. Foi minha culpa não ter codificado o mark + na string de consulta, o que causou a resposta vazia. Com a codificação correta, os resultados esperados foram retornados.

Eu assumo que o mesmo motivo se aplica a admin/users/list/all.json?email, embora isso não apareça na documentação.

1 curtida

Na verdade, isso está documentado aqui:

https://docs.discourse.org/#tag/Admin/operation/adminListUsers

mas all não é uma “bandeira” válida para passar.

Você precisará usar paginação para obter todos os usuários.

http://localhost:4200/admin/users/list/active.json?show_emails=false&page=1
http://localhost:4200/admin/users/list/active.json?show_emails=false&order=&asc=&page=2
2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.