API Reference notifique v#0.2.1
Copy MarkdownModules
Cliente Notifique — WhatsApp, SMS, Email, Push e envio por template (messages).
Dynamic OpenAPI client built from priv/operations.json at runtime.
Email — POST /v1/email/messages, GET /v1/email/messages/:id, POST cancel + domains
Email Domains — GET/POST /v1/email/domains, GET /v1/email/domains/:id, POST /v1/email/domains/:id/verify
Messages (templates) — POST /v1/templates/send Envio por template em múltiplos canais (whatsapp, sms, email).
Deserializa JSON (mapas) em structs dos modelos OpenAPI gerados.
Helpers para resolver módulos de modelos OpenAPI por nome de schema.
Política efetiva de inbound (sempre v2 na resposta da API; documentos v1 no banco são promovidos ao ler). channels inclui sms, whatsapp (com dm e group, cada um com defaultActions.persist|webhook e rules), email, telegram, rcs. Opcional storagePricing com credits/cents (null = usar padrão da plataforma via env).
Merge parcial da política inbound (v2). Ex.: channels.sms.{enabled,defaultActions,rules}, channels.whatsapp.{enabled,allowPrivateChats,allowGroupChats,dm,group}, storagePricing.
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Atualização parcial. Pelo menos um campo é obrigatório. Campos aninhados (hostedPageTheme, hostedPageCopy, hostedPageForm) fazem merge com o valor atual; null reseta o bloco.
Grafo acíclico (DAG) com exatamente um trigger. Arestas a partir de condition exigem branch: true | false.
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Exatamente um entre contactId, email, phone deve ser enviado.
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Pelo menos um de email ou phone não vazio após trim.
Legado: campos planos + custom. Novo fluxo: actions.
Resposta JSON vazia (sucesso sem payload).
Campanha multicanal. channels ⊆ canais habilitados do template (whatsapp|sms|email|telegram). Status: DRAFT, SCHEDULED, RUNNING, COMPLETED, FAILED, CANCELLED.
Canal na campanha (create/update): whatsapp, sms, email, telegram, push, rcs, instagram. Deve ser subconjunto dos canais habilitados no template.
templateId obrigatório. channels ⊆ enabledChannels do template (whatsapp, sms, email, telegram). Com scheduledFor (≥ ~2 min), status inicial SCHEDULED. Sending Pool WhatsApp: configure no painel (a API v1 de create ainda não envia sendingPoolId).
Mesclado por cima das propriedades do contato no render do template.
Estatísticas da campanha (últimos 4 canais de create)
Contato do workspace (phone e/ou email; tags). telegramLinks por instância Telegram;
Pelo menos um de phone ou email obrigatório. telegramLinks ou languages opcional (códigos de GET /v1/meta/contact-locales).
Todos os campos opcionais; tagIds substitui a lista de tags. telegramLinks (incl. array vazio) substitui todas as ligações.
DSL v1: version, match (all|any), rules (ate 32). Tipos: tag, property, contactField, topic, receiveMarketing.
Uma regra do segmento. Campos dependem de type.
Valor da regra (string/number/boolean conforme op). containsOneOf usa CSV.
Tag (etiqueta) do contato no workspace.
Ligação do contato a uma instância Telegram do workspace.
Resposta JSON vazia (sucesso sem payload).
Mapa TIPO|host → status (ex.: TXT|api._domainkey.example.com).
Domínio de e-mail (listagem, detalhe ou verify). Campos internos de provedor (provider, providerDomainKey, …) não são expostos.
Atalho do registro DKIM principal, quando disponível.
Metadados de envio retornados na listagem e em GET por ID; a API sempre devolve todos estes campos (nullable onde indicado).
Dados adicionais em alguns erros (ex.: status do e-mail em cancel).
Pelo menos um de text ou html é obrigatório.
Localização de assunto e corpo por destinatário.
Webhook só para este envio: eventos email.* deste lote vão para esta URL HTTPS.
Corpo conforme type. email: subject obrigatório e text e/ou html. template: templateId e variables.
Resposta JSON vazia (sucesso sem payload).
text: message. Mídia: mediaUrl, mimetype, fileName e caption opcional. template: templateId e variables.
URLs da página pública de conexão. Quem tiver a URL pode conectar/desconectar a instância — rotacione o secret após o uso.
Estado do warm-up da instância (conexão não oficial AIOGRAPI, primeiros 5 dias após firstConnectedAt).
Authorize responde com HTTP 302 e body vazio; use o header Location.
Resposta JSON vazia (sucesso sem payload).
Forma de pagamento.
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Canal planejado para uso.
Resposta JSON vazia (sucesso sem payload).
Objetivo principal no onboarding.
Perfil do responsável pela conta.
Snapshot de plano, créditos e assinatura.
Conteúdo enviado (mesmo shape de payload no POST).
Envio canônico: to (device IDs, 1–500) e conteúdo em payload.
Opções ricas (Web Notification API + mobile). Use options.notification.
Webhook só para este envio: eventos push.* deste lote.
Conteúdo do push. Com type: push, informe pelo menos title ou body. Com type: template, use templateId e variables.
Envio canônico: to (E.164) e conteúdo em payload. type: basic, card, carousel, file ou template.
Metadados em RcsLog.metadata (string→string).
Webhook só para este envio: eventos rcs.* deste lote.
Conteúdo conforme type (basic, card, carousel, file, template).
Evento de clique; clickedAt em ISO 8601 na resposta JSON.
Erro genérico da API v1 (short links).
Modelo persistido + shortUrl; datas em ISO 8601.
Resposta de validação global (Elysia) para corpo/query inválidos; HTTP 400.
Localização do texto por destinatário.
Objeto JSON persistido em SmsLog.metadata (máx. 20 chaves, 16 KB). Valores podem ser strings ou outros tipos JSON.
Webhook só para este envio: eventos (sms.*) deste lote são POSTados nesta URL HTTPS em vez dos webhooks configurados no workspace.
Corpo conforme type. text: message obrigatório (9–160 caracteres após variáveis). template: templateId e variables.
Metadados quando localização IA/manual foi aplicada.
Detalhe de um MO; inclui relatedSmsLog quando houver vínculo com um envio.
Item na listagem de SMS recebidos; receivedAt em ISO 8601.
Resposta de um SMS na listagem ou em GET por ID: a API sempre devolve todos estes campos; datas ausentes vêm como null. Não inclui provider, externalId nem rawResponse.
Informe ids, identities ou ambos (total combinado ≤ 100).
Quem criou a entrada (automático, painel ou integração).
Motivo da supressão.
Tipo de identidade na lista de não contatar.
Detalhe de uma mensagem enviada (GET por ID): usa messageId como identificador interno.
Item da listagem de mensagens enviadas (campo interno: id).
Webhook só para este envio (eventos telegram.*). URL HTTPS pública.
Conforme type (message, mediaUrl, latitude/longitude, templateId/variables, etc.)
URLs da página pública de conexão. Quem tiver a URL pode conectar/desconectar a instância — rotacione o secret após o uso.
Campos dependem da ação. speak: text, voice. play: audioUrl. gather: prompt, maxDigits, timeoutSecs, voice. transfer: to. dtmf: digits.
Chamada de voz: from, to, type e conteúdo em payload.
Corpo conforme type: speak (text, opcional voice/language), play (audioUrl), gather, template (templateId, variables).
Dados para pareamento: QR em base64, code, pairingCode e count (UNOFFICIAL); ou status do provider oficial (OFFICIAL*).
Chamada de voz: from, to, type e conteúdo em payload.
speak: text, opcional voice/language. play: audioUrl. gather: objeto gather. template: templateId, variables.
Template variables.
Resposta padronizada para cancel, delete e edit: envelope success/data; data contém message_id e status em MAIÚSCULO.
Tradução por destinatário (manual ou IA). Campos traduzíveis: payload.message, payload.caption.
Canal de fallback em falha final do WhatsApp (máx. 1).
Webhook só para este envio: eventos message.* destes destinatários vão para esta URL HTTPS.
Conteúdo conforme type. text: message. image|video|audio|document: mediaUrl, fileName, mimetype (obrigatórios); caption opcional. location: latitude, longitude, name, address. contact: contact ou contactId. buttons: title, description, buttons (1 a 3; reply | copy | url | call | pix). list: title, description, buttonText, listSections. carousel: cards (1 a 10). template: templateId, variables, headerMediaUrl, carouselCardMediaUrls.
Objeto de contato. Requer fullName e pelo menos um de wuid ou phoneNumber. Opcionais: organization, email, url.
Opcional. Objeto JSON chave → valor que preenche os placeholders do template (ex.: {"nome": "Maria", "codigo": "482910"}).
Conteúdo de data na resposta de envio.
Presente quando localization.mode é manual ou ai e houve tradução.
URLs da página pública de conexão. Quem tiver a URL pode conectar/desconectar a instância — rotacione o secret após o uso.
Estado do warm-up da instância (conexão não oficial, primeiros 3 dias após firstConnectedAt).
Botão que inicia ligação para o número informado (somente dígitos/DDI conforme validação da API).
Botão copiar código (PIX copia e cola, cupom, etc.).
Botão PIX (deve ser o único botão da mensagem).
Botão de resposta. O id é referenciado quando o destinatário toca (eventos/webhooks).
Botão que abre URL. Deve ser HTTPS e host público (sem localhost/rede privada).
Detalhe do inbound: texto e metadados mínimos; sem payload bruto do conector.
Indica se a mídia pode ser baixada via POST /v1/whatsapp/messages/inbound/{id}/media ou GET /v1/whatsapp/messages/inbound/{id}/media/download.
Mensagem recebida; receivedAt em ISO 8601; sem payload bruto do conector nem IDs externos. instance identifica a conexão.
Arquivo de mídia do inbound em base64.
Conteúdo de data na resposta de status. Status sempre em MAIÚSCULO.
Resposta JSON vazia (sucesso sem payload).
Resposta JSON vazia (sucesso sem payload).
Bloco por canal na criacao/edicao. enabled liga o canal; payload depende do canal.
Valores padrao por chave. Requer o array variables listando todas as chaves de placeholder usadas no template.
Push API — apps, devices, messages
SMS — POST /v1/sms/messages, GET /v1/sms/messages/:id, POST /v1/sms/messages/:id/cancel
API OpenAPI tipada — namespaces, query, body e retorno com @spec para Dialyzer/IDE.
Acesse via Notifique.api(client) após Notifique.new/2.
WhatsApp — POST /v1/whatsapp/messages, GET/DELETE/PATCH/POST /v1/whatsapp/messages/:id, /v1/whatsapp/instances/...