Не могу разобраться в API для добавления и удаления владельцев группы

Я хочу добавлять и удалять владельцев групп через API. Это не задокументировано в документации API.

При отслеживании вызовов в режиме администратора, добавление пользователя в владельцы выполняется так:

PUT groups/<gid>/owners с телом запроса usernames=nikkilocke (обратите внимание: без префикса admin!)

Удаление пользователя из владельцев выполняется так:

DELETE admin/groups/<gid>/owners с телом запроса user_id=<uid>

Изучение исходного кода показывает:


      def group_add_owners(group_id, args)
        args = API.params(args).required(:usernames).to_h
        put("/admin/groups/#{group_id}/owners.json", group: args)
      end

      def group_remove_owners(group_id, args)
        args = API.params(args).required(:usernames).to_h
        delete("/admin/groups/#{group_id}/owners.json", group: args)
      end

И этот код, похоже, не менялся с 2023 года.

Я использую Discourse 3.4.7, и точка добавления владельцев в исходном коде возвращает ошибку 404.

Попробованные URL:

PUT /groups/384/owners usernames=nikkilocke — ОК

PUT /admin/groups/384/owners group[usernames]=nikkilocke — ошибка 404

DEL /admin/groups/384/owners group[usernames]=nikkilocke — ОК

DEL /admin/groups/384/owners user_id = 12 — ОК

Может ли кто-нибудь подсказать, что происходит, и какие URL следует использовать для этого, пожалуйста?

Я предполагаю, что это опечатка, а не причина вашей ошибки?

Лучшая и наиболее надежная документация по API — Обратная разработка API Discourse

Вы уверены, что у вас есть действительный ключ API и что вы передаёте его правильно? Ошибка 404 ожидается, если вы не прошли аутентификацию корректно.

Сможете ли вы выполнить какие-либо запросы, требующие авторизации?

Как я уже говорил в оригинальном посте, 3 из 4 вариантов работают нормально (с тем же API-ключом).

Ах, извините. «OK» в конце строки somehow была слишком незаметной для меня, чтобы я мог её отследить.

Когда я добавляю владельца, я вижу этот PUT-запрос https://example.com/groups/75/owners.json с данными формы usernames= pfaffman123.

Вы следовали шагам реверс-инжиниринга, на которые я дал ссылку?

@Nikki_Locke, вам удалось решить вашу проблему?