Cas où admin/users.json?email=foobar ou admin/users/list/all.json?email=foobar renvoient un tableau vide

Salut,

Comme indiqué dans le titre, lorsque j’exécute les points de terminaison ci-dessus, j’obtiens une réponse [] dans Postman. Presque tous les [] si l’utilisateur foobar n’a pas de sujet créé, mais il y a un utilisateur qui vient de créer un sujet et la requête ci-dessus répond également avec [], alors que je pense que les deux devraient toujours renvoyer des informations sur les utilisateurs, car ces informations de base (IP enregistrée, nom d’utilisateur) sont des informations sur les utilisateurs lorsqu’ils viennent de créer leur compte.

Au fait, je ne trouve pas le point de terminaison admin/users.json sur https://docs.discourse.org/. Est-il supprimé et n’est plus censé être utilisé. Merci !

1 « J'aime »

Il existe également ce point de terminaison /admin/users/list/{flag}.json que vous pouvez utiliser.

Pour filtrer par e-mail, vous pouvez faire :

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

Je vais examiner la documentation de l’API pour ces points de terminaison et voir si nous devons apporter des mises à jour.

Salut @blake,

Et si j’appelle toujours admin/users.json, obtiendrai-je une 404 ou puis-je continuer à l’utiliser dans mon code. Ma version d’installation de discourse est 3.4.0.beta2, cela signifie que je peux toujours utiliser admin/users.json ?

Chose étrange, je ne trouve pas admin/users/list/all.json?email sur https://docs.discourse.org/.

Oui, c’est tout à fait possible. Vous pouvez continuer à utiliser /admin/users.json. Il utilise exactement le même code sous-jacent que /admin/users/list/{flag}.json. C’est probablement l’une des raisons pour lesquelles il n’a pas encore été documenté.

Je suis capable d’obtenir que /admin/users.json retourne un nouvel utilisateur sans aucun sujet.

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
  }
]

Vous devez vous assurer d’utiliser l’adresse e-mail exacte, sinon vous obtiendrez un tableau vide en résultat.

Merci @blake. C’est ma faute de ne pas avoir encodé le signe + dans la chaîne de requête, ce qui a provoqué la réponse vide. Avec le bon encodage, les résultats attendus ont été retournés.

Je suppose que la même raison s’applique à admin/users/list/all.json?email, même si cela n’apparaît pas dans la documentation.

1 « J'aime »

Ceci est en fait documenté ici :

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

mais all n’est pas un « drapeau » valide à passer.

Vous devrez utiliser la pagination pour obtenir tous les utilisateurs.

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 « J'aime »

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