# Adicionar consulta para alterações de atribuição de tags em tópicos à API

**URL:** https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730
**Category:** Feature
**Tags:** webhooks
**Created:** [Agosto 25, 2021, 8:14pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730 "2021-08-25T20:14:26Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![oshyan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oshyan/32/212644_2.png) [@oshyan](https://meta.discourse.org/u/oshyan)
#### Post date: [Agosto 25, 2021, 8:14pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/1 "2021-08-25T20:14:26Z")

</div>

Como mencionado aqui pela Integromat:

> [@Integromat](#):
>
> Infelizmente, atualmente não há uma maneira _elegante_ de realizar o que você deseja. Isso se deve principalmente às limitações da API do Discourse. O principal problema é que não há uma maneira fácil de monitorar atribuições recentes de tags.

Parece que poderiam haver algumas melhorias na forma como as atribuições de tags em tópicos são expostas por meio da API. Especificamente, a capacidade de consultar tags recém-adicionadas em tópicos. Meu caso de uso específico é utilizar o sistema de tags do Discourse para indicar que algum tópico deve ser exportado para outro sistema (um gerenciador de tarefas, por exemplo), e estou planejando usar a Integromat para fazer isso. Mas isso poderia ser aplicado igualmente a qualquer sistema que consulte a API para determinar, por exemplo, se uma tag “Criar Tarefa” foi adicionada a um tópico e, em seguida, agir com base nessa informação.

Minha compreensão é que a API atual não permite isso facilmente. Existe uma solução alternativa com webhooks, mas, a menos que eu esteja enganado, uma chamada direta à API seria mais limpa e simples.

Obrigado por considerar isso! Espero ter colocado isso no lugar certo. 😃

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Agosto 25, 2021, 8:44pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/2 "2021-08-25T20:44:12Z")

</div>

> [@oshyan](#):
>
> a capacidade de consultar tags recém-adicionadas em tópicos.

Adicionar uma tag em um tópico acionará a classe de webhook `topic`, que você pode monitorar para acompanhar qualquer tag recém-adicionada em seus tópicos. Você pode até mesmo filtrá-la para uma tag específica na interface do Discourse, para manter o número de eventos baixo.

---

<div class="post-metadata">

### Author: ![oshyan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oshyan/32/212644_2.png) [@oshyan](https://meta.discourse.org/u/oshyan)
#### Post date: [Agosto 25, 2021, 9:03pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/3 "2021-08-25T21:03:02Z")

</div>

Obrigado pela resposta rápida! Então a “solução alternativa” que o Integromat sugere é realmente _a_ maneira prevista de lidar com isso?

> [@Integromat](#):
>
> Após uma investigação mais aprofundada, podemos confirmar que uma solução por meio do nosso módulo genérico de webhooks pode ser uma opção viável.
> 
> Se você conseguir configurar webhooks na sua conta do Discourse e usar a URL de webhook genérica do Integromat como ouvinte, poderá monitorar eventos de “tópicos”, que carregam informações de tags no payload.

Infelizmente, não sou muito familiarizado com APIs versus webhooks, etc., mas estou pensando especificamente na integração que o Fibery tem com o Discourse. Na verdade, ele espelha totalmente o conteúdo do Discourse, mas em um sistema que permite interligação arbitrária de dados (por exemplo, tópicos, usuários, etc.) para gerenciamento de projetos e feedback em nível superior. Pelo que entendi, eles usam a API para essa integração:

> **[Fibery User Guide → Start](https://the.fibery.io/@public/User_Guide/Start-6568)**

Então, se _eles_ quisessem dar suporte a tags em sua integração (o que atualmente não fazem), incluindo a detecção de adição/remoção de tags, seria possível com a API atual? Se não, isso sugere alguma utilidade ainda não vista para adicionar mais profundidade ao suporte a tags da API?

Novamente, reconheço que posso estar fazendo perguntas óbvias por ignorância. Talvez seja difícil ou excessivamente trabalhoso expor isso na API, ou simplesmente não faça sentido por algum motivo. Mas espero que seja algo fácil de esclarecer. 🙏

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Agosto 25, 2021, 9:12pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/4 "2021-08-25T21:12:52Z")

</div>

> [@oshyan](#):
>
> Não tenho grande familiaridade com API versus webhooks,

Uma chamada de API permite que um serviço externo acesse o Discourse sempre que desejar para extrair dados.

No entanto, se esse serviço quiser reagir a eventos no Discourse, precisaria verificar periodicamente por alterações (polling), o que é desperdício ou impraticável se houver muitas “coisas” para monitorar/verificar.

Os webhooks permitem que o Discourse dê um leve empurrão nesse serviço externo sempre que um novo evento ocorrer, para que ele possa fazer _o seu trabalho_ apenas quando houver algo a fazer. O serviço pode confiar nas informações do payload do webhook, se forem suficientes, ou usá-las para acionar chamadas de API adicionais para executar a tarefa necessária. Assim, a API e o sistema de webhooks são complementares.

---

<div class="post-metadata">

### Author: ![oshyan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oshyan/32/212644_2.png) [@oshyan](https://meta.discourse.org/u/oshyan)
#### Post date: [Agosto 25, 2021, 9:53pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/6 "2021-08-25T21:53:21Z")

</div>

Excelente, isso é muito útil. Então, digamos que você esteja espelhando o Discourse para um sistema externo (Fibery). Se entendi corretamente, seria apropriado usar a API para coletar inicialmente todos os dados dos tópicos, etc. Mas, se você quisesse manter esses dados atualizados ao longo do tempo, por exemplo, para alterações de Categoria ou Tag, você usaria Webhooks para ficar informado sobre essas mudanças, certo? Se sim, e quanto a obter dados para tópicos totalmente novos? Através da API ou do Webhook? Talvez colocando de outra forma, faz sentido usar a API apenas para uma extração única para popular um espelho e, em seguida, usar Webhooks continuamente para mantê-lo atualizado em tudo? Ou é uma combinação dos dois e, se for, como essa combinação funciona?

---

<div class="post-metadata">

### Author: ![oshyan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oshyan/32/212644_2.png) [@oshyan](https://meta.discourse.org/u/oshyan)
#### Post date: [Setembro 8, 2021, 11:01pm UTC](https://meta.discourse.org/t/add-query-for-tag-assignment-changes-on-topics-to-api/201730/7 "2021-09-08T23:01:32Z")

</div>

Gostaria muito de fechar o ciclo sobre este tópico e ter certeza de que entendo completamente como isso deve funcionar. Estou trabalhando com a equipe do Fibery na esperança de que eles também implementem isso. Portanto, se você puder responder às minhas perguntas restantes, isso seria muito apreciado. 🙏
