> ## Documentation Index
> Fetch the complete documentation index at: https://docs.morada.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar Notificação

> Envia mensagens template do WhatsApp Business via Meta Cloud API para contatos especificos.

O endpoint suporta dois formatos de payload: o formato moderno (baseado na estrutura de componentes da Meta API) e o formato legado (com substituicoes simples de texto).



## OpenAPI

````yaml POST /send-notification
openapi: 3.1.0
info:
  title: API Morada.ai
  version: 1.0.0
  description: >-
    Boas-vindas a documentacao da API Morada.ai!


    O escopo dessa documentacao e o cadastro e ingestao de leads dentro da
    M.I.A, com cada metodo tendo sua especificidade detalhada.


    Caso haja duvidas sobre a API, entre em contato direto com nosso time de
    engenharia em team.engineering@morada.ai, ou caso seja uma duvida geral,
    entre em contato com nosso time de atendimento atraves de seu Account
    Manager, ou atraves do e-mail help@morada.ai.
  contact:
    name: Morada.ai Engineering
    email: team.engineering@morada.ai
servers:
  - url: https://mia-gateway.morada.ai
    description: Servidor de producao
security:
  - apiKey: []
tags:
  - name: Deals
    description: Operacoes relacionadas a negocios (deals)
  - name: Leads
    description: Operacoes relacionadas a ingestao de leads
  - name: Notificacoes
    description: Envio de notificacoes e mensagens template via WhatsApp
  - name: Produtos
    description: Consulta e busca de produtos cadastrados
paths:
  /send-notification:
    post:
      tags:
        - Notificacoes
      summary: Enviar Notificacao
      description: >-
        Envia mensagens template do WhatsApp Business via Meta Cloud API para
        contatos especificos.


        O endpoint suporta dois formatos de payload: o formato moderno (baseado
        na estrutura de componentes da Meta API) e o formato legado (com
        substituicoes simples de texto).
      operationId: sendNotification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendNotificationRequest'
            examples:
              bodySimples:
                summary: Template com body simples
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  template:
                    name: template_body_simples
                    language:
                      code: pt_BR
                    components:
                      - type: body
                        parameters:
                          - type: text
                            text: Joao Silva
              comIgnoreTransfer:
                summary: Com ignoreTransferToTalkIfUnanswered
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  ignoreTransferToTalkIfUnanswered: true
                  template:
                    name: template_body_simples
                    language:
                      code: pt_BR
                    components:
                      - type: body
                        parameters:
                          - type: text
                            text: Joao Silva
              comSpecialInstructions:
                summary: Com instrucoes especiais
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  template:
                    name: template_body_simples
                    language:
                      code: pt_BR
                    components:
                      - type: body
                        parameters:
                          - type: text
                            text: Joao Silva
                  specialInstructions: Direcione o lead pelo fluxo de ...
              headerUrlButton:
                summary: Button URL + Body + Header (documento)
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  template:
                    name: template_header_url_button
                    language:
                      code: pt_BR
                    components:
                      - type: header
                        parameters:
                          - type: document
                            document:
                              link: https://exemplo.com/documento.pdf
                              filename: documento.pdf
                      - type: body
                        parameters:
                          - type: text
                            text: Joao Silva
                      - type: button
                        sub_type: url
                        index: 0
                        parameters:
                          - type: text
                            text: codigo123
                          - type: text
                            text: usuario456
              quickReply:
                summary: Quick Reply
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  template:
                    name: template_com_quick_reply
                    language:
                      code: pt_BR
                    components:
                      - type: body
                        parameters:
                          - type: text
                            text: Joao Silva
                          - type: text
                            text: Status Aprovado
                      - type: button
                        sub_type: quick_reply
                        index: 0
              legado:
                summary: Formato legado (messageTemplate + replacements)
                value:
                  name: Nome do Cliente
                  phoneNumber: (11) 999999999
                  email: cliente@exemplo.com
                  instanceId: 1234
                  source: Origem
                  messageTemplate: template_com_tres_params
                  replacements:
                    - Joao
                    - Maria
                    - Carlos
      responses:
        '200':
          description: Notificacao enviada com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendNotificationResponse'
              example:
                success: true
                conversationId: 7a7806cd-597d-49f8-b6a1-c27a47e724f7
        '400':
          description: Requisicao invalida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationErrorResponse'
              examples:
                payloadInvalido:
                  summary: Payload invalido (campo obrigatorio ausente)
                  value:
                    success: false
                    message: >-
                      [{"code":"invalid_type","expected":"string","received":"undefined","path":["phoneNumber"],"message":"Required"}]
                instanciaNaoEncontrada:
                  summary: Instancia nao encontrada
                  value:
                    success: false
                    message: Instance not found
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationErrorResponse'
              example:
                success: false
                message: Template 'template_inexistente' not found
      security:
        - apiKey: []
components:
  schemas:
    SendNotificationRequest:
      type: object
      required:
        - name
        - phoneNumber
        - instanceId
        - source
      description: >-
        Suporta dois formatos: moderno (com template) e legado (com
        messageTemplate + replacements).
      properties:
        name:
          type: string
          description: Nome do contato
        phoneNumber:
          type: string
          description: Numero de telefone do contato
        email:
          type: string
          format: email
          description: Email do contato (opcional)
        instanceId:
          type: integer
          description: ID da instancia do bot WhatsApp
        source:
          type: string
          description: Origem da notificacao
        ignoreTransferToTalkIfUnanswered:
          type: boolean
          description: Se true, nao transfere para o Talk caso o lead nao responda
        specialInstructions:
          type: string
          description: Instrucoes especiais para a MIA ao responder o lead
        template:
          $ref: '#/components/schemas/WhatsAppTemplate'
        messageTemplate:
          type: string
          description: Nome do template de mensagem (formato legado)
        replacements:
          type: array
          items:
            type: string
          description: Substituicoes para os placeholders do template (formato legado)
    SendNotificationResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indica se a notificacao foi enviada com sucesso
        conversationId:
          type: string
          format: uuid
          description: ID da conversa criada ou localizada
    NotificationErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Sempre false em caso de erro
        message:
          type: string
          description: Mensagem de erro detalhada
    WhatsAppTemplate:
      type: object
      required:
        - name
        - language
      description: Estrutura do template WhatsApp seguindo o padrao da Meta Cloud API
      properties:
        name:
          type: string
          description: Nome do template aprovado no Meta Business Manager
        language:
          type: object
          required:
            - code
          properties:
            code:
              type: string
              description: 'Codigo do idioma do template (ex: pt_BR)'
              example: pt_BR
        components:
          type: array
          description: Componentes do template (header, body, button)
          items:
            $ref: '#/components/schemas/TemplateComponent'
    TemplateComponent:
      type: object
      required:
        - type
      description: Componente de um template WhatsApp
      properties:
        type:
          type: string
          enum:
            - header
            - body
            - button
          description: Tipo do componente
        sub_type:
          type: string
          enum:
            - url
            - quick_reply
          description: Subtipo do componente (apenas para buttons)
        index:
          type: integer
          description: Indice do botao (apenas para buttons)
        parameters:
          type: array
          description: Parametros do componente
          items:
            $ref: '#/components/schemas/TemplateParameter'
    TemplateParameter:
      type: object
      required:
        - type
      description: Parametro de um componente de template
      properties:
        type:
          type: string
          enum:
            - text
            - document
            - image
            - video
          description: Tipo do parametro
        text:
          type: string
          description: Valor do texto (quando type = text)
        document:
          type: object
          description: Dados do documento (quando type = document)
          properties:
            link:
              type: string
              format: uri
              description: URL do documento
            filename:
              type: string
              description: Nome do arquivo
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-morada-api-key
      description: Chave de API do parceiro. Fornecida pelo time da Morada.ai.

````