Agregar evento al calendario usando la API REST

Hola,

He estado buscando durante horas cómo usar la API REST para agregar un evento de calendario a un tema y, desafortunadamente, no he podido encontrar una respuesta.

He creado un calendario de categorías y pude mostrar mi evento de tema creado manualmente, pero no pude manejar la automatización de la creación del evento del tema cuando agrego un tema usando la API REST.

Encontré “discourse-post-events/events.json”, pero cuando probé esta API, obtuve “No encontrado”. Supongo que es porque hay una necesidad de identificadores de eventos y no sé cómo crearlos.

Gracias por tu ayuda, consejos y comentarios.

1 me gusta

¿Qué tal si simplemente crea un tema o una publicación para el evento a través de la API y añade las etiquetas [event][/event] a la publicación como el valor de su parámetro raw?

El truco parece ser que tiene que haber un carácter de nueva línea (\n) entre las etiquetas de event de apertura y cierre.

Estoy usando \"Content-Type: multipart/form-data\" en el siguiente ejemplo porque es más fácil que lidiar con JSON desde la línea de comandos. Además, $api_key se establece en el valor de una clave API real:

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=\"¿Puedo crear un evento a través de la 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 me gusta
    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);

Recibo “Unprocessable Entity” cuando el campo raw es el siguiente:

[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]

Cuando elimino la declaración del evento y pongo una descripción alternativa, mi foro se actualiza, pero tan pronto como pongo la declaración del evento, recibo “Unprocessable Entity”.

No entiendo qué estoy haciendo mal.

Necesitarás escapar las comillas dobles que aparecen dentro de la cadena. Por ejemplo:

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

Además, asegúrate de incluir el carácter de nueva línea (`\n`) entre las etiquetas del evento.

Tomé mis datos e intenté crear la publicación usando la UX. Me dijo que el nombre del evento debe tener un mínimo de 5 caracteres.

Después de eso, probé tu consulta curl @simon y dijo algo interesante: No puedo crear la publicación porque no tengo los derechos para crear eventos…

Así que le di los derechos de administrador.

Y ahora está bien. Todo funciona.

¡Gracias por tu ayuda!

1 me gusta

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