Errore durante il tentativo di aggiornare la watchlist per un gruppo tramite API (PUT groups/{id}.json)

Priorità/Gravità:

medio-alta

Piattaforma:

Script Python e riga di comando cURL

Versione del server Discourse:

3.6.0.beta3-latest (6adb4f8e84)

Descrizione:

quando tento di aggiornare i watching_category_ids di un gruppo esistente, il mio script Python (che utilizza una semplice “requests.put”) riporta il seguente errore:

_doPut> ERRORE dalla richiesta: 422 Unprocessable Entity {‘user_count’: 2, ‘errors’: [‘Hai fornito parametri non validi alla richiesta: update_existing_users’]}

anche se non c’è nessun parametro chiamato update_existing_users nei miei dati JSON.

Usando cURL per verificare tramite:

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

Ottengo lo stesso errore:

{“user_count”:2,“errors”:[“Hai fornito parametri non validi alla richiesta: update_existing_users”]}%

Passaggi per la riproduzione:

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

edit: aggiunta la versione del server discourse

Sì, quel endpoint è un po’ strano. Volevamo avvisare i membri dello staff riguardo al numero di utenti potenzialmente interessati e offrire loro la possibilità di scegliere se applicare la modifica retroattivamente o meno.

Ecco perché stai vedendo il “{ 'user_count': 2, ... }” nella risposta dal server.

Ho chiarito il messaggio di errore in modo che abbia più senso e ho anche migliorato il codice front-end per gestire meglio questo “caso d’uso”, oltre ad aggiungere le specifiche.

1 Mi Piace

Ciao - e grazie per la rapida azione! :slight_smile:

Purtroppo sono ancora confuso: devo impostare il valore per watching_category_ids per un dato gruppo, e anche se il messaggio di errore è ora cambiato, è ancora un errore 422. Quindi, come posso aggiornare il gruppo con la nuova lista di watching_category_ids tramite uno script usando la rest-API?

Ho già provato ad aggiungere "update_existing_users”=True nei dati JSON della chiamata PUT, l’errore è stato lo stesso di quello segnalato. :frowning:

Grazie ancora,

saluti, Andreas

Si aspetta questo la stringa “true” - minuscola.

Grazie mille, @zogstrip ! Funziona ora! :smiley:

(e solo per riferimento, \"update_existing_users”=True deve essere esterno/parallelo all’elemento “group” nel json inviato (mostrato qui in sintassi Python, quindi True viene tradotto nella stringa “true”):

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

Questo argomento è stato chiuso automaticamente dopo 20 ore. Non sono più consentite nuove risposte.