# Eventos de webhook

> Referência dos eventos que um webhook recebe, gerada a partir do catálogo da API, com os campos de data de cada um e o que nunca vai em nenhum evento.

Cada entrega de [webhook](/api/webhooks) leva um envelope com `id`, `type`, `version`, `occurredAt`, `community` e `data`. Esta página mostra o `data` de cada evento. É gerada a partir do catálogo público da API, [`GET /api/integrations/events`](/api/referencia/integrations), que devolve também o JSON Schema de cada evento.

- Todos os eventos trazem a pessoa em `data.member`, com `id` (o membro na comunidade), `name` e `email`.
- Os valores em dinheiro vêm em cêntimos, como `{ "amount": 9990, "currency": "BRL" }`, sempre o que a pessoa pagou.
- Um campo novo pode entrar num evento sem mudar a `version`; trate os campos desconhecidos como opcionais. Uma mudança que quebre o formato dá origem a uma `version` nova.

## Os eventos

| Evento | Família | Quando sai |
|---|---|---|
| [`member.joined`](#member-joined) | `member` | Uma pessoa passou a ser membro da comunidade (registo, convite aceite, compra, criação pela equipa, entrada por empresa, importação por folha ou aprovação do pedido de entrada). |
| [`member.left`](#member-left) | `member` | Uma pessoa saiu da comunidade ou foi removida. |
| [`member.returned`](#member-returned) | `member` | Uma pessoa voltou a aceder à comunidade depois de 7 dias ou mais sem acesso (login, app ou assistente), com quantos dias esteve fora. |
| [`member.role_changed`](#member-role-changed) | `member` | O papel de uma pessoa na comunidade mudou. |
| [`purchase.completed`](#purchase-completed) | `purchase` | Uma compra foi paga (ou um produto gratuito foi resgatado). |
| [`purchase.refunded`](#purchase-refunded) | `purchase` | Uma compra foi reembolsada, no todo ou em parte. |
| [`subscription.created`](#subscription-created) | `subscription` | Uma assinatura começou (paga ou em teste grátis). |
| [`subscription.renewed`](#subscription-renewed) | `subscription` | Uma assinatura foi renovada com o pagamento de um novo período. |
| [`subscription.canceled`](#subscription-canceled) | `subscription` | Uma assinatura foi cancelada, na hora ou para o fim do período. |
| [`subscription.ended`](#subscription-ended) | `subscription` | Uma assinatura terminou e o acesso dela acabou. |
| [`event.registered`](#event-registered) | `event` | Uma pessoa confirmou presença ("vou") num evento. |
| [`course.enrolled`](#course-enrolled) | `course` | Uma pessoa se matriculou num curso. |
| [`course.completed`](#course-completed) | `course` | Uma pessoa concluiu um curso. |
| [`certificate.issued`](#certificate-issued) | `certificate` | Um certificado de curso ou de evento foi emitido. |
| [`form.submitted`](#form-submitted) | `form` | Um formulário recebeu um envio (os campos preenchidos e o consentimento, sem IP). |
| [`event.checked_in`](#event-checked-in) | `event` | Uma pessoa fez check-in num evento (à porta, no quiosque, por cortesia ou pela transmissão em direto). |
| [`event.check_in_undone`](#event-check-in-undone) | `event` | A equipa desfez o check-in de uma pessoa num evento. |
| [`lesson.completed`](#lesson-completed) | `lesson` | Uma pessoa concluiu uma aula de um curso. |
| [`comment.created`](#comment-created) | `comment` | Uma pessoa comentou numa publicação, conteúdo ou item (sem o texto do comentário). |
| [`reaction.added`](#reaction-added) | `reaction` | Uma pessoa reagiu a uma publicação, comentário ou item. |
| [`post.created`](#post-created) | `post` | Uma pessoa publicou uma publicação (sem o texto). |
| [`member.tag_added`](#member-tag-added) | `member` | Foi adicionada uma etiqueta a uma pessoa. |
| [`member.tag_removed`](#member-tag-removed) | `member` | Foi retirada uma etiqueta de uma pessoa. |
| [`member.group_joined`](#member-group-joined) | `member` | Uma pessoa entrou num grupo. |
| [`member.group_left`](#member-group-left) | `member` | Uma pessoa saiu de um grupo. |
| [`member.field_changed`](#member-field-changed) | `member` | Um campo personalizado de uma pessoa mudou (só a chave do campo, nunca o valor). |
| [`checkout.started`](#checkout-started) | `checkout` | Uma pessoa com sessão iniciada abriu o checkout de um produto pago. |
| [`checkout.abandoned`](#checkout-abandoned) | `checkout` | Um checkout ficou abandonado. |
| [`checkout.recovered`](#checkout-recovered) | `checkout` | Um checkout abandonado virou compra. |
| [`space.first_visit`](#space-first-visit) | `space` | Uma pessoa abriu um espaço pela primeira vez. |
| [`space.access_granted`](#space-access-granted) | `space` | Uma pessoa ganhou acesso a um espaço (compra, plano, equipa, badge ou nível). |
| [`quiz.passed`](#quiz-passed) | `quiz` | Uma pessoa foi aprovada no quiz de uma aula (sem a nota nem as respostas). |
| [`quiz.failed`](#quiz-failed) | `quiz` | Uma pessoa não passou no quiz de uma aula (sem a nota nem as respostas). |
| [`lesson.rated`](#lesson-rated) | `lesson` | Uma pessoa avaliou uma aula pela primeira vez (sem a nota nem o comentário). |
| [`event.ticket_assigned`](#event-ticket-assigned) | `event` | Um ingresso de um pedido de grupo foi atribuído a uma pessoa (sem o código do QR). |
| [`event.registration_canceled`](#event-registration-canceled) | `event` | Uma pessoa cancelou a própria inscrição num evento. |
| [`event.waitlist_offered`](#event-waitlist-offered) | `event` | Abriu uma vaga para uma pessoa da lista de espera de um tipo de ingresso (a oferta vale até a data). |
| [`subscription.plan_changed`](#subscription-plan-changed) | `subscription` | A assinatura de uma pessoa mudou de plano (de/para e quando; sem valores). |
| [`subscription.past_due`](#subscription-past-due) | `subscription` | A assinatura de uma pessoa ficou com pagamento em atraso. |
| [`subscription.trial_ending`](#subscription-trial-ending) | `subscription` | O período de teste da assinatura de uma pessoa termina nos próximos 3 dias. |
| [`coupon.redeemed`](#coupon-redeemed) | `coupon` | Um cupom foi usado numa compra (o id do cupom, nunca o código). |
| [`survey.answered`](#survey-answered) | `survey` | Uma pessoa respondeu a uma pesquisa identificada (sem as respostas; pesquisa anônima não publica). |
| [`form.submission_reviewed`](#form-submission-reviewed) | `form` | A equipa mudou a situação de um envio de formulário (sem as respostas). |
| [`proposal.submitted`](#proposal-submitted) | `proposal` | Uma proposta foi enviada a uma chamada de trabalhos (sem o título nem o texto). |
| [`proposal.decided`](#proposal-decided) | `proposal` | Uma proposta foi aceita ou recusada (sem notas nem pareceres). |
| [`certificate.revoked`](#certificate-revoked) | `certificate` | Um certificado foi revogado (o id e o código público; sem o motivo). |
| [`upvote.topic_created`](#upvote-topic-created) | `upvote` | Um tópico de Upvote foi publicado (aprovado; sem o título nem a descrição). |
| [`upvote.topic_status_changed`](#upvote-topic-status-changed) | `upvote` | A equipa mudou a situação de um tópico de Upvote (sem a nota). |
| [`download.completed`](#download-completed) | `download` | Uma pessoa baixou um arquivo de um item de Downloads (sem o nome do arquivo nem o link). |
| [`classified.published`](#classified-published) | `classified` | Um anúncio de Classificados foi publicado (aprovado; sem o texto nem o valor). |
| [`classified.interest_received`](#classified-interest-received) | `classified` | O autor de um anúncio recebeu um interesse (sem a mensagem). |
| [`parcel.received`](#parcel-received) | `parcel` | Chegou uma encomenda para uma pessoa (o tipo; sem remetente, código nem fotografias). |
| [`parcel.picked_up`](#parcel-picked-up) | `parcel` | Uma encomenda foi levantada. |
| [`visitor.invited`](#visitor-invited) | `visitor` | Uma pessoa convidou um visitante (horário previsto; sem os dados do visitante). |
| [`visitor.arrived`](#visitor-arrived) | `visitor` | O visitante de uma pessoa chegou (sem os dados do visitante). |
| [`attendance.checked_in`](#attendance-checked-in) | `attendance` | Uma pessoa registou entrada num local de Presença. |
| [`attendance.checked_out`](#attendance-checked-out) | `attendance` | Uma pessoa registou saída de um local de Presença. |
| [`support_ticket.created`](#support-ticket-created) | `support_ticket` | Uma pessoa abriu um pedido de Suporte (tipo e categoria; sem o texto nem as fotografias). |
| [`support_ticket.resolved`](#support-ticket-resolved) | `support_ticket` | Um pedido de Suporte foi resolvido. |
| [`booking.created`](#booking-created) | `booking` | Uma pessoa fez uma reserva (recurso, início, fim e situação). |
| [`booking.canceled`](#booking-canceled) | `booking` | Uma reserva foi cancelada. |
| [`booking.checked_in`](#booking-checked-in) | `booking` | Uma pessoa fez o check-in de uma reserva. |
| [`booking.no_show`](#booking-no-show) | `booking` | Uma reserva foi marcada como não comparecimento. |
| [`download.item_published`](#download-item-published) | `download` | Um item de Downloads foi publicado (ids do item, do espaço e da categoria). |
| [`download.item_updated`](#download-item-updated) | `download` | O título, a descrição ou a capa de um item publicado de Downloads mudou (diz quais, nunca o texto). |
| [`download.item_moved`](#download-item-moved) | `download` | Um item publicado de Downloads mudou de categoria (a nova e a anterior). |
| [`download.file_added`](#download-file-added) | `download` | Um arquivo foi adicionado a um item publicado de Downloads (sem o nome do arquivo nem o link). |
| [`download.file_replaced`](#download-file-replaced) | `download` | Um arquivo de um item publicado de Downloads foi substituído por uma nova versão (com o número da versão). |
| [`download.file_removed`](#download-file-removed) | `download` | Um arquivo foi removido de um item publicado de Downloads. |
| [`download.item_deleted`](#download-item-deleted) | `download` | Um item publicado de Downloads foi eliminado. |
| [`download.category_created`](#download-category-created) | `download` | Uma categoria nova foi criada num espaço de Downloads. |
| [`post.updated`](#post-updated) | `post` | Uma publicação foi editada (sem o texto). |
| [`post.moved`](#post-moved) | `post` | Uma publicação foi movida para outro espaço (o novo e o anterior). |
| [`post.deleted`](#post-deleted) | `post` | Uma publicação foi eliminada, pelo autor ou pela equipa. |
| [`comment.deleted`](#comment-deleted) | `comment` | Um comentário foi eliminado, pelo autor ou pela equipa (sem o texto). |
| [`reaction.removed`](#reaction-removed) | `reaction` | Uma pessoa removeu uma reação de uma publicação, comentário ou item. |
| [`event.created`](#event-created) | `event` | Um evento foi criado e publicado. |
| [`event.updated`](#event-updated) | `event` | Um evento publicado foi editado. |
| [`event.deleted`](#event-deleted) | `event` | Um evento publicado foi eliminado (hoje, eliminar é cancelar). |
| [`event.stream_started`](#event-stream-started) | `event` | A transmissão ao vivo de um evento começou. |
| [`event.recording_published`](#event-recording-published) | `event` | A gravação de um evento foi publicada. |
| [`event.rescheduled`](#event-rescheduled) | `event` | A data de um evento publicado mudou (com a data anterior). |
| [`course.published`](#course-published) | `course` | Um curso foi publicado. |
| [`course.updated`](#course-updated) | `course` | Um curso publicado foi editado. |
| [`lesson.published`](#lesson-published) | `lesson` | Uma aula nova entrou num curso publicado. |
| [`course.left`](#course-left) | `course` | Uma pessoa saiu de um curso (o progresso fica guardado). |
| [`space.created`](#space-created) | `space` | Um espaço foi criado. |
| [`space.updated`](#space-updated) | `space` | Um formulário foi encerrado pela equipa. |
| [`space.deleted`](#space-deleted) | `space` | Um espaço foi eliminado. |
| [`form.published`](#form-published) | `form` | Um formulário foi publicado. |
| [`form.closed`](#form-closed) | `form` | Um formulário foi encerrado pela equipe. |
| [`form.reopened`](#form-reopened) | `form` | Um formulário encerrado foi reaberto. |
| [`message.received`](#message-received) | `message` | Um membro enviou uma DM a uma pessoa da equipa (sem o texto). |
| [`badge.awarded`](#badge-awarded) | `badge` | Uma pessoa recebeu um badge (à mão, pelo curso ou evento, por workflow ou importação). |
| [`badge.revoked`](#badge-revoked) | `badge` | Um badge foi retirado de uma pessoa. |
| [`member.level_changed`](#member-level-changed) | `member` | O nível de uma pessoa mudou: subiu (pontos e requisitos da semana, na hora) ou desceu (pontos tirados, na hora, ou requisitos da semana anterior não cumpridos, na segunda). Traz a direção e o motivo. |
| [`member.points_changed`](#member-points-changed) | `member` | O total de pontos de uma pessoa mudou (ação, ajuste da equipe ou de workflow, ou pontos devolvidos). |
| [`ping`](#ping) | `app` | Evento de teste, enviado pelo botão Enviar teste. |

### `member.joined`

Uma pessoa passou a ser membro da comunidade (registo, convite aceite, compra, criação pela equipa, entrada por empresa, importação por folha ou aprovação do pedido de entrada). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `role` | texto | `owner`, `admin`, `moderator`, `member`, `finance` |
| `source` | texto | `signup`, `invite`, `purchase`, `team`, `company`, `import`, `approval` |

### `member.left`

Uma pessoa saiu da comunidade ou foi removida. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `reason` | texto | `removed`, `left` |

### `member.returned`

Uma pessoa voltou a aceder à comunidade depois de 7 dias ou mais sem acesso (login, app ou assistente), com quantos dias esteve fora. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `daysAway` | número inteiro |  |
| `lastSeenAt` | data e hora (ISO 8601, UTC) |  |

### `member.role_changed`

O papel de uma pessoa na comunidade mudou. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `from` | texto | `owner`, `admin`, `moderator`, `member`, `finance` |
| `to` | texto | `owner`, `admin`, `moderator`, `member`, `finance` |

### `purchase.completed`

Uma compra foi paga (ou um produto gratuito foi resgatado). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `purchaseId` | texto |  |
| `orderId` | texto ou nulo |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `amount` | objeto: `amount`, `currency` | em centavos, o que a pessoa pagou |
| `discount` | objeto: `amount`, `currency` ou nulo | em centavos |
| `couponCode` | texto ou nulo |  |
| `paymentMethod` | texto ou nulo |  |
| `installments` | número inteiro ou nulo |  |
| `free` | sim/não |  |
| `ticket` | objeto: `eventId`, `ticketType`, `batch`, `quantity`, `unitPrice` ou nulo |  |

### `purchase.refunded`

Uma compra foi reembolsada, no todo ou em parte. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `purchaseId` | texto |  |
| `refundId` | texto ou nulo |  |
| `amount` | objeto: `amount`, `currency` | em centavos, o que a pessoa pagou |
| `partial` | sim/não |  |
| `accessRevoked` | sim/não |  |
| `ticketIds` | array |  |

### `subscription.created`

Uma assinatura começou (paga ou em teste grátis). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `plan` | objeto: `id`, `name`, `interval` ou nulo |  |
| `status` | texto | `ACTIVE`, `TRIALING` |
| `currentPeriodEnd` | data e hora (ISO 8601, UTC) ou nulo |  |

### `subscription.renewed`

Uma assinatura foi renovada com o pagamento de um novo período. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `amount` | objeto: `amount`, `currency` | em centavos, o que a pessoa pagou |
| `currentPeriodEnd` | data e hora (ISO 8601, UTC) ou nulo |  |

### `subscription.canceled`

Uma assinatura foi cancelada, na hora ou para o fim do período. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `endsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `immediate` | sim/não |  |
| `by` | texto | `member`, `team`, `system` |

### `subscription.ended`

Uma assinatura terminou e o acesso dela acabou. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `endedAt` | data e hora (ISO 8601, UTC) |  |

### `event.registered`

Uma pessoa confirmou presença ("vou") num evento. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |
| `registration` | objeto: `fields`, `consent` ou nulo |  |
| `ticketType` | objeto: `id`, `name` ou nulo |  |

### `course.enrolled`

Uma pessoa se matriculou num curso. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `title` | texto |  |

### `course.completed`

Uma pessoa concluiu um curso. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `title` | texto |  |
| `completedAt` | data e hora (ISO 8601, UTC) |  |

### `certificate.issued`

Um certificado de curso ou de evento foi emitido. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `certificateId` | texto |  |
| `source` | texto | `course`, `event` |
| `sourceId` | texto |  |
| `title` | texto |  |
| `url` | texto ou nulo | link público de validação |

### `form.submitted`

Um formulário recebeu um envio (os campos preenchidos e o consentimento, sem IP). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `form` | objeto: `id`, `title` |  |
| `submissionId` | texto |  |
| `submittedAt` | data e hora (ISO 8601, UTC) |  |
| `origin` | texto | `member`, `visitor` |
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `fields` | array |  |
| `consent` | objeto: `accepted`, `text`, `privacyPolicyUrl`, `at` ou nulo |  |

### `event.checked_in`

Uma pessoa fez check-in num evento (à porta, no quiosque, por cortesia ou pela transmissão em direto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `ticketId` | texto |  |
| `event` | objeto: `id`, `title`, `startsAt`, `type` |  |
| `method` | texto | `qr`, `code`, `manual`, `kiosk`, `online` |
| `checkedInAt` | data e hora (ISO 8601, UTC) |  |
| `courtesy` | sim/não |  |
| `checkedInBy` | objeto: `id`, `name` ou nulo |  |

### `event.check_in_undone`

A equipa desfez o check-in de uma pessoa num evento. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `ticketId` | texto |  |
| `event` | objeto: `id`, `title`, `startsAt`, `type` |  |
| `undoneAt` | data e hora (ISO 8601, UTC) |  |
| `undoneBy` | objeto: `id`, `name` ou nulo |  |
| `previous` | objeto: `method`, `checkedInAt` |  |

### `lesson.completed`

Uma pessoa concluiu uma aula de um curso. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `lessonId` | texto |  |

### `comment.created`

Uma pessoa comentou numa publicação, conteúdo ou item (sem o texto do comentário). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `commentId` | texto |  |
| `target` | objeto: `type`, `id` |  |

### `reaction.added`

Uma pessoa reagiu a uma publicação, comentário ou item. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `target` | objeto: `type`, `id` |  |
| `reaction` | texto |  |

### `post.created`

Uma pessoa publicou uma publicação (sem o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `postId` | texto |  |
| `spaceId` | texto ou nulo |  |

### `member.tag_added`

Foi adicionada uma etiqueta a uma pessoa. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `tag` | texto |  |

### `member.tag_removed`

Foi retirada uma etiqueta de uma pessoa. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `tag` | texto |  |

### `member.group_joined`

Uma pessoa entrou num grupo. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `group` | objeto: `id`, `name` |  |

### `member.group_left`

Uma pessoa saiu de um grupo. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `group` | objeto: `id`, `name` |  |

### `member.field_changed`

Um campo personalizado de uma pessoa mudou (só a chave do campo, nunca o valor). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `fieldKey` | texto |  |

### `checkout.started`

Uma pessoa com sessão iniciada abriu o checkout de um produto pago. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `cartId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |

### `checkout.abandoned`

Um checkout ficou abandonado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `cartId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |

### `checkout.recovered`

Um checkout abandonado virou compra. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `cartId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `purchaseId` | texto ou nulo |  |

### `space.first_visit`

Uma pessoa abriu um espaço pela primeira vez. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `spaceId` | texto |  |

### `space.access_granted`

Uma pessoa ganhou acesso a um espaço (compra, plano, equipa, badge ou nível). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `spaceId` | texto |  |
| `source` | texto | `purchase`, `plan`, `team`, `badge`, `level` |

### `quiz.passed`

Uma pessoa foi aprovada no quiz de uma aula (sem a nota nem as respostas). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `lessonId` | texto |  |
| `attemptId` | texto |  |

### `quiz.failed`

Uma pessoa não passou no quiz de uma aula (sem a nota nem as respostas). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `lessonId` | texto |  |
| `attemptId` | texto |  |

### `lesson.rated`

Uma pessoa avaliou uma aula pela primeira vez (sem a nota nem o comentário). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `lessonId` | texto |  |

### `event.ticket_assigned`

Um ingresso de um pedido de grupo foi atribuído a uma pessoa (sem o código do QR). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `ticketId` | texto |  |

### `event.registration_canceled`

Uma pessoa cancelou a própria inscrição num evento. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |

### `event.waitlist_offered`

Abriu uma vaga para uma pessoa da lista de espera de um tipo de ingresso (a oferta vale até a data). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `ticketTypeId` | texto ou nulo |  |
| `expiresAt` | data e hora (ISO 8601, UTC) |  |

### `subscription.plan_changed`

A assinatura de uma pessoa mudou de plano (de/para e quando; sem valores). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `from` | objeto: `id`, `name`, `type` |  |
| `to` | objeto: `id`, `name`, `type` |  |
| `effectiveAt` | data e hora (ISO 8601, UTC) |  |

### `subscription.past_due`

A assinatura de uma pessoa ficou com pagamento em atraso. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `since` | data e hora (ISO 8601, UTC) |  |

### `subscription.trial_ending`

O período de teste da assinatura de uma pessoa termina nos próximos 3 dias. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `subscriptionId` | texto |  |
| `product` | objeto: `id`, `name`, `type` |  |
| `trialEndsAt` | data e hora (ISO 8601, UTC) |  |

### `coupon.redeemed`

Um cupom foi usado numa compra (o id do cupom, nunca o código). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `couponId` | texto |  |
| `productId` | texto |  |
| `purchaseId` | texto |  |

### `survey.answered`

Uma pessoa respondeu a uma pesquisa identificada (sem as respostas; pesquisa anônima não publica). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `surveyId` | texto |  |

### `form.submission_reviewed`

A equipa mudou a situação de um envio de formulário (sem as respostas). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `formId` | texto |  |
| `submissionId` | texto |  |
| `status` | texto | `NEW`, `IN_CONTACT`, `DONE` |

### `proposal.submitted`

Uma proposta foi enviada a uma chamada de trabalhos (sem o título nem o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `callId` | texto |  |
| `trackId` | texto ou nulo |  |
| `submissionId` | texto |  |

### `proposal.decided`

Uma proposta foi aceita ou recusada (sem notas nem pareceres). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `callId` | texto |  |
| `trackId` | texto ou nulo |  |
| `submissionId` | texto |  |
| `status` | texto | `accepted`, `rejected` |

### `certificate.revoked`

Um certificado foi revogado (o id e o código público; sem o motivo). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `certificateId` | texto |  |
| `code` | texto |  |

### `upvote.topic_created`

Um tópico de Upvote foi publicado (aprovado; sem o título nem a descrição). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `topicId` | texto |  |
| `spaceId` | texto |  |

### `upvote.topic_status_changed`

A equipa mudou a situação de um tópico de Upvote (sem a nota). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `topicId` | texto |  |
| `spaceId` | texto |  |
| `status` | texto | `OPEN`, `PLANNED`, `IN_PROGRESS`, `DONE`, `ARCHIVED` |

### `download.completed`

Uma pessoa baixou um arquivo de um item de Downloads (sem o nome do arquivo nem o link). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `fileId` | texto |  |

### `classified.published`

Um anúncio de Classificados foi publicado (aprovado; sem o texto nem o valor). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `adId` | texto |  |
| `spaceId` | texto |  |

### `classified.interest_received`

O autor de um anúncio recebeu um interesse (sem a mensagem). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `adId` | texto |  |
| `interestId` | texto |  |

### `parcel.received`

Chegou uma encomenda para uma pessoa (o tipo; sem remetente, código nem fotografias). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `parcelId` | texto |  |
| `spaceId` | texto |  |
| `kind` | texto | `LETTER`, `PACKAGE`, `OTHER` |

### `parcel.picked_up`

Uma encomenda foi levantada. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `parcelId` | texto |  |
| `spaceId` | texto |  |
| `kind` | texto | `LETTER`, `PACKAGE`, `OTHER` |

### `visitor.invited`

Uma pessoa convidou um visitante (horário previsto; sem os dados do visitante). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `invitationId` | texto |  |
| `spaceId` | texto |  |
| `expectedStartAt` | data e hora (ISO 8601, UTC) |  |

### `visitor.arrived`

O visitante de uma pessoa chegou (sem os dados do visitante). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `invitationId` | texto |  |
| `spaceId` | texto |  |
| `arrivedAt` | data e hora (ISO 8601, UTC) |  |

### `attendance.checked_in`

Uma pessoa registou entrada num local de Presença. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `visitId` | texto |  |
| `spaceId` | texto |  |
| `at` | data e hora (ISO 8601, UTC) |  |

### `attendance.checked_out`

Uma pessoa registou saída de um local de Presença. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `visitId` | texto |  |
| `spaceId` | texto |  |
| `at` | data e hora (ISO 8601, UTC) |  |

### `support_ticket.created`

Uma pessoa abriu um pedido de Suporte (tipo e categoria; sem o texto nem as fotografias). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `ticketId` | texto |  |
| `spaceId` | texto |  |
| `kind` | texto | `MAINTENANCE`, `REQUEST` |
| `category` | texto | `FACILITIES`, `CLEANING`, `EQUIPMENT`, `INTERNET`, `ACCESS`, `BILLING`, `OTHER` |

### `support_ticket.resolved`

Um pedido de Suporte foi resolvido. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `ticketId` | texto |  |
| `spaceId` | texto |  |
| `kind` | texto | `MAINTENANCE`, `REQUEST` |
| `category` | texto | `FACILITIES`, `CLEANING`, `EQUIPMENT`, `INTERNET`, `ACCESS`, `BILLING`, `OTHER` |

### `booking.created`

Uma pessoa fez uma reserva (recurso, início, fim e situação). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `bookingId` | texto |  |
| `resourceId` | texto |  |
| `spaceId` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) |  |
| `endsAt` | data e hora (ISO 8601, UTC) |  |
| `status` | texto | `PENDING_APPROVAL`, `PENDING_PAYMENT`, `CONFIRMED` |

### `booking.canceled`

Uma reserva foi cancelada. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `bookingId` | texto |  |
| `resourceId` | texto |  |
| `spaceId` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) |  |
| `endsAt` | data e hora (ISO 8601, UTC) |  |

### `booking.checked_in`

Uma pessoa fez o check-in de uma reserva. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `bookingId` | texto |  |
| `resourceId` | texto |  |
| `spaceId` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) |  |
| `endsAt` | data e hora (ISO 8601, UTC) |  |

### `booking.no_show`

Uma reserva foi marcada como não comparecimento. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `bookingId` | texto |  |
| `resourceId` | texto |  |
| `spaceId` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) |  |
| `endsAt` | data e hora (ISO 8601, UTC) |  |

### `download.item_published`

Um item de Downloads foi publicado (ids do item, do espaço e da categoria). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `categoryId` | texto ou nulo |  |

### `download.item_updated`

O título, a descrição ou a capa de um item publicado de Downloads mudou (diz quais, nunca o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `categoryId` | texto ou nulo |  |
| `changed` | array |  |

### `download.item_moved`

Um item publicado de Downloads mudou de categoria (a nova e a anterior). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `categoryId` | texto ou nulo |  |
| `previousCategoryId` | texto ou nulo |  |

### `download.file_added`

Um arquivo foi adicionado a um item publicado de Downloads (sem o nome do arquivo nem o link). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `fileId` | texto |  |

### `download.file_replaced`

Um arquivo de um item publicado de Downloads foi substituído por uma nova versão (com o número da versão). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `fileId` | texto |  |
| `version` | número inteiro |  |

### `download.file_removed`

Um arquivo foi removido de um item publicado de Downloads. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `fileId` | texto |  |

### `download.item_deleted`

Um item publicado de Downloads foi eliminado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `itemId` | texto |  |
| `spaceId` | texto |  |
| `categoryId` | texto ou nulo |  |

### `download.category_created`

Uma categoria nova foi criada num espaço de Downloads. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `categoryId` | texto |  |
| `spaceId` | texto |  |

### `post.updated`

Uma publicação foi editada (sem o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `postId` | texto |  |
| `spaceId` | texto ou nulo |  |

### `post.moved`

Uma publicação foi movida para outro espaço (o novo e o anterior). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `postId` | texto |  |
| `spaceId` | texto |  |
| `previousSpaceId` | texto ou nulo |  |

### `post.deleted`

Uma publicação foi eliminada, pelo autor ou pela equipa. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `postId` | texto |  |
| `spaceId` | texto ou nulo |  |

### `comment.deleted`

Um comentário foi eliminado, pelo autor ou pela equipa (sem o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `commentId` | texto |  |
| `target` | objeto: `type`, `id` |  |

### `reaction.removed`

Uma pessoa removeu uma reação de uma publicação, comentário ou item. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `target` | objeto: `type`, `id` |  |
| `reaction` | texto |  |

### `event.created`

Um evento foi criado e publicado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |

### `event.updated`

Um evento publicado foi editado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |

### `event.deleted`

Um evento publicado foi eliminado (hoje, eliminar é cancelar). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |

### `event.stream_started`

A transmissão ao vivo de um evento começou. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |

### `event.recording_published`

A gravação de um evento foi publicada. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |

### `event.rescheduled`

A data de um evento publicado mudou (com a data anterior). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `eventId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |
| `startsAt` | data e hora (ISO 8601, UTC) ou nulo |  |
| `type` | texto ou nulo | `online`, `in_person`, `hybrid` |
| `previousStartsAt` | data e hora (ISO 8601, UTC) ou nulo |  |

### `course.published`

Um curso foi publicado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |

### `course.updated`

Um curso publicado foi editado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |

### `lesson.published`

Uma aula nova entrou num curso publicado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `lessonId` | texto |  |

### `course.left`

Uma pessoa saiu de um curso (o progresso fica guardado). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `courseId` | texto |  |
| `title` | texto |  |

### `space.created`

Um espaço foi criado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `spaceId` | texto |  |
| `module` | texto |  |

### `space.updated`

Um formulário foi encerrado pela equipa. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `spaceId` | texto |  |
| `module` | texto |  |

### `space.deleted`

Um espaço foi eliminado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `spaceId` | texto |  |
| `module` | texto |  |

### `form.published`

Um formulário foi publicado. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `formId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |

### `form.closed`

Um formulário foi encerrado pela equipe. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `formId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |

### `form.reopened`

Um formulário encerrado foi reaberto. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `formId` | texto |  |
| `spaceId` | texto ou nulo |  |
| `title` | texto |  |

### `message.received`

Um membro enviou uma DM a uma pessoa da equipa (sem o texto). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `recipient` | objeto: `id`, `name` |  |
| `conversationId` | texto |  |
| `messageId` | texto |  |
| `newConversation` | sim/não |  |

### `badge.awarded`

Uma pessoa recebeu um badge (à mão, pelo curso ou evento, por workflow ou importação). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `badge` | objeto: `id`, `name`, `visibility` |  |
| `grantId` | texto |  |
| `source` | texto | `manual`, `rule`, `workflow`, `import` |
| `sourceRef` | texto ou nulo |  |
| `awardedAt` | data e hora (ISO 8601, UTC) |  |

### `badge.revoked`

Um badge foi retirado de uma pessoa. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `badge` | objeto: `id`, `name`, `visibility` |  |
| `grantId` | texto |  |
| `revokedAt` | data e hora (ISO 8601, UTC) |  |

### `member.level_changed`

O nível de uma pessoa mudou: subiu (pontos e requisitos da semana, na hora) ou desceu (pontos tirados, na hora, ou requisitos da semana anterior não cumpridos, na segunda). Traz a direção e o motivo. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `direction` | texto | `up`, `down` |
| `cause` | texto | `points`, `activity` |
| `from` | objeto: `id`, `level`, `name` |  |
| `to` | objeto: `id`, `level`, `name` |  |
| `points` | número inteiro |  |

### `member.points_changed`

O total de pontos de uma pessoa mudou (ação, ajuste da equipe ou de workflow, ou pontos devolvidos). · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `member` | objeto, a pessoa: `id`, `name`, `email`, `phone` (E.164 ou nulo), `phoneCountry` (ISO 3166-1 alfa-2 ou nulo) |  |
| `from` | número inteiro |  |
| `to` | número inteiro |  |
| `delta` | número inteiro |  |
| `source` | texto | `action`, `reversal`, `team`, `workflow` |

### `ping`

Evento de teste, enviado pelo botão Enviar teste. · `version: 1`

| Campo de `data` | Tipo | Valores |
|---|---|---|
| `message` | texto |  |

Os eventos `event.checked_in` (com `method`: `qr`, `code`, `manual`, `kiosk` ou `online`, e `courtesy`) e `event.check_in_undone`. O token do bilhete nunca vai. Ver [Eventos › Check-in](/espacos/eventos#check-in).

## O que nunca vai

Nenhum evento leva, nem vai levar nesta versão:

| Nunca | Porquê |
|---|---|
| Taxas, valor líquido, custos | Ficam nos relatórios da app |
| Dados do processador de pagamento e do cartão (nem os 4 últimos dígitos) | Segurança e sigilo do pagamento |
| CPF/CNPJ, morada, data de nascimento, campos personalizados (o telefone vai só no bloco `member`) | Dados pessoais além do necessário |
| Palavra-passe, token, segredo de qualquer tipo | Segurança |
| IP, identificadores de navegação, navegador | Privacidade |
| Texto de publicação, comentário, pedido de suporte ou formulário | Conteúdo do membro |
| Notas internas da equipa | Interno |

## Relacionados

- [Webhooks](/api/webhooks)
- [IPs fixos](/api/ips-fixos)
- [Integrações & APIs](/configuracoes/integracoes-e-apis#webhooks)
