{
  "schemaVersion": 1,
  "key": "whatsapp",
  "name": "WhatsApp Business",
  "description": "Envie mensagens pela WhatsApp Business Cloud API (Meta) a partir dos seus processos.",
  "category": "communication",
  "vendor": "Meta",
  "version": "1.0.0",
  "status": "ACTIVE",
  "credentials": [
    {
      "type": "BEARER_TOKEN",
      "secretLabel": "Token de acesso",
      "secretPlaceholder": "EAAG...",
      "helpText": "Pegue o token de acesso do seu app no painel do WhatsApp Cloud API (Meta for Developers).",
      "helpUrl": "https://developers.facebook.com/apps"
    }
  ],
  "actions": [
    {
      "key": "message.send",
      "name": "Enviar mensagem de texto",
      "description": "Envia uma mensagem de texto para um número via WhatsApp Business Cloud API.",
      "inputs": [
        {
          "key": "phoneNumberId",
          "label": "ID do número (Phone Number ID)",
          "type": "TEXT",
          "required": true,
          "description": "ID do número da WhatsApp Business (Meta) que envia a mensagem."
        },
        {
          "key": "to",
          "label": "Destinatário",
          "type": "TEXT",
          "required": true,
          "description": "Número no formato internacional, ex.: 5511999998888."
        },
        {
          "key": "message",
          "label": "Mensagem",
          "type": "TEXT",
          "required": true,
          "description": "Aceita expressões do processo, ex.: {{ process.protocol }}."
        }
      ],
      "outputs": [
        {
          "key": "messages",
          "label": "Messages",
          "type": "OUTPUT",
          "required": false
        },
        {
          "key": "contacts",
          "label": "Contacts",
          "type": "OUTPUT",
          "required": false
        }
      ]
    }
  ],
  "triggers": [
    {
      "key": "message.received",
      "name": "Mensagem recebida",
      "description": "Dispara quando chega uma mensagem no número da WhatsApp Business. Inscrição MANUAL: no painel da Meta (WhatsApp → Configuration), cole a URL de callback e use o verify token exibido no nó.",
      "mode": "PUSH",
      "exclusiveByConnection": true,
      "inputs": [],
      "events": [
        {
          "type": "MESSAGE_STATUS_CHANGED"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "TEXT"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "IMAGE"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "AUDIO"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "VIDEO"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "DOCUMENT"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "LOCATION"
        },
        {
          "type": "MESSAGE_RECEIVED",
          "messageType": "OTHER"
        }
      ]
    }
  ]
}
