Adicionar Evento no Calendário usando API REST

Olá,

Procurei por horas como usar a API REST para adicionar um evento de calendário a um tópico e, infelizmente, não encontrei uma resposta.

Criei um calendário de categoria e pude exibir meu evento de tópico criado manualmente, mas não consegui automatizar a criação do evento de tópico ao adicionar um tópico usando a API REST.

Encontrei "discourse-post-events/events.json", mas quando tentei essa API, recebi "Not Found" (Não encontrado). Suponho que seja porque há a necessidade de IDs de evento e eu não sei como criá-los.

Obrigado pela sua ajuda, conselhos e comentários.

1 curtida

Que tal apenas criar um tópico ou post para o evento via API e adicionar as tags [event][/event] ao post como o valor do seu parâmetro raw?

O truque parece ser que deve haver um caractere de nova linha (\\n) entre as tags event de abertura e fechamento.

Estou usando \"Content-Type: multipart/form-data\" no exemplo abaixo porque é mais fácil do que lidar com JSON da linha de comando. Além disso, $api_key está definido como o valor de uma chave de 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=\"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 curtida
    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);

Recebo "Unprocessable Entity" quando o raw é o seguinte:

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

Quando removo a declaração do evento e coloco uma descrição alternativa, meu fórum é atualizado, mas assim que coloco a declaração do evento, recebo "Unprocessable Entity".

Não entendo o que estou fazendo de errado.

Você precisará escapar as aspas duplas que ocorrem dentro da string. Por exemplo:

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

Além disso, certifique-se de incluir o caractere de nova linha (`\n`) entre as tags de evento.

Peguei meus dados e tentei criar a postagem usando a UX. Ela me disse que o nome do evento deve ter no mínimo 5 caracteres.

Depois disso, tentei sua consulta curl @simon e ela disse algo interessante: Não consigo criar a postagem porque não tenho os direitos para criar eventos…

Então dei a ele os direitos de administrador.

E agora está tudo bem. Tudo está funcionando.

Obrigado pela ajuda!

1 curtida

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