Encontrei o mesmo tipo de problema, mas segui um caminho diferente. Em vez de consumir os endpoints da API de calendário diretamente, meu importador cria BBCode de [event] e o publica no Discourse, permitindo que o plugin o analise como se um usuário da equipe tivesse criado o evento manualmente. Dessa forma, evito depender de parâmetros de consulta transitórios como include_expired e obtenho um contrato mais estável — posts simples e BBCode provavelmente não mudarão sem aviso prévio.
[event start="2025-09-29 09:00" end="2025-10-29 10:00" location="Office B1"]
Reunião para discutir a API RESTful do Discourse
[/event]
A desvantagem é mais trabalho do meu lado: tive que escrever um formatador que converte dados ICS em tags [event] devidamente escapadas, lida com eventos de dia inteiro versus eventos com horário marcado, e assim por diante. Mas, na prática, essa abordagem tem sido muito mais resiliente em atualizações. Ela não remove a necessidade de avisos de descontinuação upstream (eu ainda gostaria que as APIs falhassem rapidamente ou pelo menos avisassem quando as opções fossem removidas), mas reduziu o risco de meus scripts quebrarem silenciosamente.