Hinzufügen von Gruppenmitgliedern vs. Hinzufügen von Besitzern: Datenformat ist unterschiedlich

Wenn Sie die API verwenden, um Mitglieder und Besitzer zu einer Gruppe hinzuzufügen, scheint das erforderliche Datenformat unterschiedlich zu sein. Das mag beabsichtigt sein, aber ich würde gerne wissen, warum (es bricht pydiscourse, die beste Bibliothek, die ich für die Interaktion mit der Discourse-API in Python finden kann).

Ein Mitglied zu einer Gruppe hinzufügen:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/members.json" \
    -d 'usernames={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

Einen Besitzer zu einer Gruppe hinzufügen:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/owners.json" \
    -d 'group[usernames]={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

Mich wundert, warum der Schlüssel für den Parameter „usernames" im Endpunkt für Besitzer als group[usernames] geschrieben werden muss und nicht einfach als usernames.

Der einzige Grund, den ich dafür angeben kann, ist, dass tatsächlich zwei verschiedene Controller verwendet werden.

Der Endpunkt zum Hinzufügen von Mitgliedern ist dem Gruppen-Controller zugeordnet:

PUT /admin/groups/:id/members(.:format) groups#add_members 

Und der Endpunkt zum Hinzufügen von Eigentümern ist dem Admin-Gruppen-Controller zugeordnet.

PUT /admin/groups/:id/owners(.:format) admin/groups#add_owners

Es ist unwahrscheinlich, dass wir diesen Endpunkt aktualisieren, da viele Integrationen diesen Endpunkt bereits so verwenden, wie er ist. Ihre beste Option ist es, ein Issue im pydiscourse-Repository zu eröffnen. Sie könnten auch einen Fix für add_group_owner in Ihrer Python-Anwendung per Monkey Patch vorübergehend implementieren, bis das Problem in pydiscourse behoben ist.