Случаи, когда admin/users.json?email=foobar или admin/users/list/all.json?email=foobar возвращают пустой массив

Привет,

Как следует из заголовка, при запуске вышеуказанных эндпоинтов в Postman я получаю ответ []. Почти всегда это [], если у пользователя foobar нет созданных тем, но есть один пользователь, который только что создал тему, и для него вышеуказанный запрос также возвращает [], хотя я считаю, что в обоих случаях должны возвращаться данные пользователя, так как базовая информация (IP-адрес регистрации, имя пользователя) является информацией о пользователе сразу после создания учетной записи.

Кстати, я не могу найти эндпоинт admin/users.json на https://docs.discourse.org/. Он удален и больше не должен использоваться? Спасибо!

Также вы можете использовать этот endpoint /admin/users/list/{flag}.json.

Чтобы отфильтровать по электронной почте, выполните:

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

Я изучу документацию по API для этих endpoint и посмотрю, нужно ли внести какие-либо обновления.

Привет, @blake,

Что будет, если я всё ещё вызову admin/users.json? Получу ли я ошибку 404 или могу продолжать использовать его в своём коде? Моя версия установки Discourse — 3.4.0.beta2. Значит ли это, что я всё ещё могу использовать admin/users.json?

Странно то, что я не могу найти admin/users/list/all.json?email в https://docs.discourse.org/.

Да, всё в порядке. Вы можете продолжать использовать /admin/users.json. Он использует точно такой же базовый код, что и /admin/users/list/{flag}.json. Вероятно, именно поэтому он ещё не задокументирован.

Мне удалось получить через /admin/users.json данные о новом пользователе без каких-либо тем.

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

Вам необходимо убедиться, что вы используете точный адрес электронной почты, иначе в результате вы получите пустой массив.

Спасибо, @blake. Это моя ошибка: я не закодировал знак «+» в строке запроса, что вызвало пустой ответ. При правильном кодировании возвращаются ожидаемые результаты.

Я предполагаю, что та же причина касается admin/users/list/all.json?email, хотя это не указано в документации.

На самом деле это задокументировано здесь:

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

однако all не является допустимым «флагом» для передачи.

Вам потребуется пагинация, чтобы получить всех пользователей.

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