Fehler beim Versuch, die Watchlist für eine Gruppe über API zu aktualisieren (PUT groups/{id}.json)

Priorität/Schweregrad:

mittel bis hoch

Plattform:

Python-Skript sowie cURL-Befehlszeile

Discourse-Server-Version:

3.6.0.beta3-latest (6adb4f8e84)

Beschreibung:

Beim Versuch, die „watching_category_ids“ einer bestehenden Gruppe zu aktualisieren, meldet mein Python-Skript (das eine einfache „requests.put“-Anfrage verwendet) den folgenden Fehler:

_doPut> FEHLER bei der Anfrage: 422 Unprocessable Entity {‘user_count’: 2, ‘errors’: [‘Sie haben ungültige Parameter für die Anfrage übergeben: update_existing_users’]}

obwohl in meinen JSON-Daten kein Parameter namens update_existing_users vorhanden ist.

Wenn ich cURL verwende, um dies zu überprüfen:

curl -k -L -X PUT -H 'api-key:xyz’ \
   -H 'api-username:system'  \
   -H 'Accept:application/json;charset=utf-8'  \
   -H 'Content-Type:application/json'   \
   --data '{\"group\":{\"name\":\"eb-chair-exo\",\"watching_category_ids\":[336,337]}}' \
   https://cms-phys-talk.web.cern.ch/groups/46.json

erhalte ich denselben Fehler:

{“user_count”:2,“errors”:[“Sie haben ungültige Parameter für die Anfrage übergeben: update_existing_users”]}%

Reproduzierbare Schritte:

curl -k -L -X PUT -H 'api-key:xyz’ \
   -H 'api-username:system'  \
   -H 'Accept:application/json;charset=utf-8'  \
   -H 'Content-Type:application/json'   \
   --data '{\"group\":{\"name\":\"eb-chair-exo\",\"watching_category_ids\":[336,337]}}' \
   https://cms-phys-talk.web.cern.ch/groups/46.json

Bearbeitung: Discourse-Server-Version hinzugefügt

Ja, dieser Endpunkt ist etwas seltsam. Wir wollten die Mitarbeiter über die Anzahl der potenziell betroffenen Benutzer informieren und ihnen die Möglichkeit geben, zwischen der rückwirkenden Anwendung der Änderung oder nicht zu wählen.

Deshalb sehen Sie “{ 'user_count': 2, ... }” in der Antwort des Servers.

Ich habe die Fehlermeldung verständlicher gemacht und auch den Frontend-Code verbessert, um diesen „Anwendungsfall“ besser zu behandeln, sowie Spezifikationen hinzugefügt

1 „Gefällt mir“

Hallo – und vielen Dank für die schnelle Reaktion! :slight_smile:

Leider bin ich immer noch verwirrt: Ich muss den Wert für watching_category_ids für eine bestimmte Gruppe festlegen, und obwohl die Fehlermeldung jetzt geändert ist, handelt es sich immer noch um einen 422-Fehler. Wie kann ich also die Gruppe mit der neuen Liste von watching_category_ids über ein Skript mithilfe der REST-API aktualisieren?

Ich habe bereits versucht, \"update_existing_users”=True in die JSON-Daten des PUT-Aufrufs einzufügen, der Fehler war derselbe wie zuvor gemeldet. :frowning:

Vielen Dank nochmals,

Viele Grüße, Andreas

Es erwartet diesen String “true” - klein geschrieben.

Vielen Dank, @zogstrip! Funktioniert jetzt! :smiley:

(und nur zur Referenz, das \"update_existing_users”=True muss außerhalb/parallel zum „group“-Element in der gesendeten JSON sein (hier in Python-Syntax gezeigt, also wird True in den String “true” übersetzt):

            jsonData={
                "group": {
                    "name": f"{groupName}",
                    "watching_category_ids": newWatchList,
                },
                "update_existing_users": True,
            },

Dieses Thema wurde nach 20 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr zulässig.