Ajouter un événement au calendrier en utilisant l'API REST

Bonjour,

Cela fait des heures que je cherche comment utiliser l’API REST pour ajouter un événement de calendrier à un sujet et malheureusement, je n’ai pas trouvé de réponse.

J’ai créé un calendrier de catégorie et j’ai pu afficher mon événement de sujet créé manuellement, mais je n’ai pas réussi à automatiser la création d’événements de sujet lorsque j’ajoute un sujet via l’API REST.

J’ai trouvé « discourse-post-events/events.json », mais lorsque j’ai essayé cette API, j’ai obtenu « Not Found ». Je suppose que c’est parce qu’il y a un besoin d’identifiants d’événement et je ne sais pas comment les créer.

Merci pour votre aide, vos conseils et vos commentaires.

1 « J'aime »

Que diriez-vous de simplement créer un sujet ou un message pour l’événement via l’API et d’ajouter les balises [event][/event] au message comme valeur de son paramètre raw ?

L’astuce semble être qu’il doit y avoir un caractère de nouvelle ligne (\\n) entre les balises event d’ouverture et de fermeture.

J’utilise \"Content-Type: multipart/form-data\" dans l’exemple ci-dessous car c’est plus facile que de gérer le JSON depuis la ligne de commande. De plus, $api_key est défini sur la valeur d’une clé d’API réelle :

curl -X POST \"http://localhost:4200/posts.json\" \
-H \"Api-Key: $api_key\" \
-H \"Api-Username: scossar\" \
-H \"Content-Type: multipart/form-data\" \
-F title=\"Can I create an event via the API?\" \
-F category=6 \
-F raw='[event start=\"2024-05-10 20:00\" status=\"public\" timezone=\"America/Vancouver\" end=\"2024-05-10 21:30\" allowedGroups=\"trust_level_0\"]\\n[/event]'
1 « J'aime »
    const url = DISCOURSE_BASE_URL + '/posts.json';
    const message = {
        method: 'POST',
        headers: {
            'Api-Key': DISCOURSE_API_KEY,
            'Api-Username': DISCOURSE_API_USERNAME,
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            "title": title,
            "raw": content,
            "category": categoryId
        })
    };
    const response1 = await fetch(url, message);

J’obtiens « Entité non traitable » lorsque le champ raw est le suivant :

[event start="2024-05-16 19:00" status="public" name="585" timezone="Europe/Paris" allowedGroups="trust_level_0" end="2024-05-16 21:00"]
[/event]

Lorsque je retire la déclaration d’événement et que je mets une description alternative, mon forum est mis à jour, mais dès que je mets la déclaration d’événement, j’obtiens « Entité non traitable ».

Je ne comprends pas ce que je fais de mal.

Vous devrez échapper les guillemets doubles qui apparaissent dans la chaîne. Par exemple :

"raw": "[event start=\"2024-05-16 19:00\"...\n```

Assurez-vous également d'inclure le caractère de nouvelle ligne (`\n`) entre les balises d'événement.

J’ai pris mes données et j’ai essayé de créer le post en utilisant l’UX. Il m’a dit que le nom de l’événement devait comporter au moins 5 caractères.

Après cela, j’ai essayé votre requête curl @simon et elle a dit quelque chose d’intéressant : Je ne peux pas créer de post car je n’ai pas les droits pour créer des événements…

Je lui ai donc donné les droits d’administrateur.

Et maintenant, c’est bon. Tout fonctionne.

Merci pour votre aide !

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.