Erreur lors de la tentative de mise à jour de la liste de suivi pour un groupe via l'API (PUT groups/{id}.json)

Priorité/Sévérité :

moyen à élevé

Plateforme :

Script Python ainsi que la ligne de commande cURL

Version du serveur Discourse :

3.6.0.beta3-latest (6adb4f8e84)

Description :

lorsque j’essaie de mettre à jour les « watching_category_ids » d’un groupe existant, mon script python (utilisant un simple « requests.put ») signale l’erreur suivante :

_doPut> ERROR from request:  422 Unprocessable Entity {‘user_count’: 2, ‘errors’: [‘You supplied invalid parameters to the request: update_existing_users’]}

même s’il n’y a aucun paramètre appelé update_existing_users dans mes données json.

L’utilisation de cURL pour vérifier via :

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

J’obtiens la même erreur :

{“user_count”:2,“errors”:[“You supplied invalid parameters to the request: update_existing_users”]}%

Étapes pour reproduire :

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

édition : ajout de la version du serveur discourse

Oui, ce point de terminaison est un peu étrange. Nous voulions avertir les membres du personnel du nombre d’utilisateurs potentiellement affectés et leur offrir la possibilité de choisir entre appliquer la modification rétroactivement ou non.

C’est pourquoi vous voyez le « {'user_count': 2, ...} » dans la réponse du serveur.

J’ai clarifié le message d’erreur pour qu’il soit plus logique et j’ai également amélioré le code du front-end pour mieux gérer ce « cas d’utilisation », en plus d’ajouter des spécifications.

1 « J'aime »

Bonjour - et merci pour la réaction rapide ! :slight_smile:

Malheureusement, je suis toujours confus : je dois définir la valeur de watching_category_ids pour un groupe donné, et même si le message d’erreur a changé, il s’agit toujours d’une erreur 422. Alors, comment puis-je mettre à jour le groupe avec la nouvelle liste de watching_category_ids via un script en utilisant l’API REST ?

J’ai déjà essayé d’ajouter \"update_existing_users”=True dans les données JSON de l’appel PUT, l’erreur était la même que celle signalée. :frowning:

Merci encore,

salutations, Andreas

Il s’attend à la chaîne de caractères “true” - en minuscules.

Un grand merci à @zogstrip ! Ça fonctionne maintenant ! :smiley:

(et juste pour référence, le \"update_existing_users”=True doit être à l’extérieur/parallèle à l’élément « group » dans le json envoyé (montré ici en syntaxe Python, donc True est traduit en chaîne de caractères “true”):

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

Ce sujet a été automatiquement fermé après 20 heures. Les nouvelles réponses ne sont plus autorisées.