Saltar al contenido

Gatilhos, tipos de nó e regras disponíveis

GET/api/workflows/triggers

Auth
Requiere token
Clave de API:
workflows:read
X-CommunityId
X-CommunityId Envía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.

Owner, admin, moderador e financeiro. Os eventos do catálogo que levam um membro (inclusive `member.joined` com origem `import`), com os filtros de cada um. `internal: true` marca os fatos de RH (avaliação, 1:1, metas, PDI, pesquisa): iniciam workflows, mas não vão para webhooks públicos. `time: true` marca os gatilhos por tempo (`time.no_access`, `time.daily`, `time.review_pending`, `time.review_due`, `time.one_on_one_upcoming`, `time.one_on_one_not_logged`, `time.agreement_overdue`, `time.key_result_stale`, `time.goal_cycle_ending`, `time.pdi_action_overdue`, `time.survey_unanswered`): uma passada por dia, a partir das 9h no fuso da comunidade, com "exatamente N dias" em cada regra de data (o mesmo fato entra uma vez); `params` traz o intervalo de `days`. `manual: true` marca o gatilho `manual` (2026-10-26), que nenhum evento dispara: a equipe inicia por `POST /api/workflows/{id}/run`. `schedule: true` marca o gatilho `schedule` (agendado): `filter: { frequency: daily|weekly|monthly, weekdays? (semanal, 0 = domingo a 6), monthDay? (mensal, 1 a 28), timeOfDay: "HH:mm", audience }`, no fuso da comunidade, com o público das campanhas (descadastro, bounce e denúncia fora; `itemAccess`, só de campanha, volta 422). Dispara uma vez por dia do agendamento, a partir do horário, nunca para um horário anterior a entrar no ar; com o envio suspenso, o dia é pulado. As pessoas entram em lotes, como no início manual. Ligar pede `consent: true`. `webhook: true` marca `webhook.received` (webhook de entrada): `filter: { match: { by: email|memberId, path }, variables: [{ key, path }] }`, com o endereço em `POST /api/workflows/{id}/triggers/{nodeId}/webhook` (ver `POST /api/workflow-hooks`). `called: true` marca `workflow.called` (chamado por outro workflow): `filter: { variables: [{ key }] }`, as entradas. A resposta traz também `platformActions` (o que o nó "Ação da plataforma" oferece) e `subWorkflow` (`maxDepth` 3, `inputs`, `outputs`, `value`). Cada gatilho vem como um bloco da paleta (`block: { type: trigger, trigger }`, o nó `trigger` do desenho) com `filterSpecs`, como pedir cada filtro: `{ key, input: id, ref }` (o tipo do item: event, course, form, product, space, group, reviewCycle, survey), `{ key, input: text, maxLength }`, `{ key, input: multiSelect, options }` ou `{ key, input: integer, min, max }`."

Fase 5a: cada gatilho traz `occurs`, quantas vezes pode acontecer para a mesma pessoa: `oncePerJoin` (uma vez por entrada na comunidade: `member.joined`; quem sai e volta entra de novo), `oncePerItem` (uma vez por pessoa e item; `itemFilter` diz o filtro que escolhe o item, e com ele escolhido vale como `oncePerJoin`), `repeats` e `time` (tempo, agendado, manual, webhook). Com `oncePerJoin` (ou item escolhido, ou `purchase.completed` com o filtro `firstPurchase: true`, a primeira compra concluída de qualquer produto, gratuitas incluídas) o campo "Quantas vezes a pessoa entra" não se aplica: no máximo uma execução desde a entrada na comunidade. Gatilho novo `member.returned` (alguém volta depois de 7 dias ou mais sem acessar), com o filtro `minDaysAway` (inteiro de 7 a 365). Também: `endTypes` (`endSuccess`, `endError`), `actionTypes` (as ações com saída de erro), `logLevels` e `limits.triggers` = 1.

Fase 5c: os gatilhos do ciclo de vida de cada família (Downloads, posts, comentários e reações, eventos, cursos, espaços e formulários; lista em `GET /api/integrations/events`), com `occurs` (`oncePerItem` para publicado, criado e apagado; `repeats` para editado, movido, arquivo e reação) e as variáveis `actor.name` (quem fez a ação), `download.title`, `download.folder`, `download.previous_folder`, `download.file_name`, `download.file_type`, `download.size`, `download.version` e `event.previous_date`.

Fase 5b (variáveis entre blocos): cada gatilho traz `variables`, as variáveis que ele entrega, `[{ token, label, group, type, format?, options?, example }]` (`token` sem chaves, como `purchase.product`; `type` é `text`, `number`, `date`, `list` ou `boolean`; `format: money` é em centavos, `bytes` em bytes, `time` só a hora; `options` são os valores fechados com o rótulo traduzido). `commonVariables` são as que todo gatilho tem (`member.*`, sempre com `member.language`, e `community.name`/`community.language`); `stepVariables`, o que cada passo deixa (`steps.<nó>.result|skipped|reason|error`, `error` só no ramo de erro); `operators`, os operadores da condição "Variável" por tipo; `listOperators`, os de "tem a tag" e "está no grupo". Os nomes antigos (`{{nome}}`, `{{comunidade}}`, `{{campo_x}}`, `{{gatilho_x}}`) continuam valendo, mas não aparecem aqui.

Fase 5g: gatilho `message.received` ("DM recebida", família `message`): um membro manda uma DM a uma pessoa da equipe (owner, admin, moderador, financeiro); DM entre membros, ou de alguém da equipe, não dispara. A pessoa da execução é quem mandou. Filtros: `recipientIds` (as pessoas da equipe que recebem, 1 a 20; `filterSpecs` traz `input: ids, ref: teamMember`), `senderTag` e `senderGroupId` (quem manda tem a tag / está no grupo, lidos na hora) e `newConversation: true` (só a primeira mensagem de uma conversa nova; sem ele, toda mensagem, com o campo de reentrada). `occurs: repeats`. Variáveis: `dm.from.name`, `dm.from.email`, `dm.to.name` e `dm.conversation_url` (o link da conversa, o único valor que continua link). `dm.text` vem com `restricted: dmText`: só pode ser usada (senão 422 `variableUnavailable`) e só é preenchida quando o workflow pertence a quem recebeu a DM: o filtro tem exatamente uma pessoa em `recipientIds`, é ela quem salva e liga o desenho (outra pessoa que salve ou ligue um desenho com `dm.text` recebe 422) e foi ela quem escreveu a versão em execução e quem ligou o workflow (senão o valor fica vazio). Destinos: só numa DM assinada por essa pessoa (`fromMemberId` = o destinatário), no corpo de um e-mail (nunca no assunto) e em condições; em "Registrar log", Slack, comentário ou DM assinada por outra pessoa, 422 `variableUnavailable`. O texto nunca fica guardado na execução (nem o HTML do e-mail) e nunca vai para o webhook público.

Headers

NombreTipoDescripción
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Respuestas

CódigoDescripción
200`{ triggers: [{ type, family, filters, sources?, internal?, time?, params?, occurs, itemFilter? }], nodeTypes, endTypes, actionTypes, platformActions: [{ name, label, description, scope, minRole, ownerOnly, identity, confirmation, cost, templated, inputSchema }], subWorkflow, logLevels, ruleKinds, limits }`.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Autenticado, mas sem permissão para esta operação.
500Erro interno do servidor.

Ejemplo con curl

curl -X GET "https://api.memberfy.net/api/workflows/triggers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID"