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

# Enviar notificação (AR Online)

> Envia uma notificação por um ou mais canais em uma única requisição.




## OpenAPI

````yaml /openapi.yaml post /gw/email
openapi: 3.0.3
info:
  title: AR Online API Gateway
  version: '1.0'
  description: >
    API de notificações multicanal da AR Online. Um único `POST /gw/email` pode
    disparar e-mail, SMS, WhatsApp, voz e carta. O processamento é assíncrono: a
    resposta retorna um `idEmail` usado para consultar o status posteriormente.
servers:
  - url: https://api.ar-online.com.br
    description: Produção
security:
  - tokenAuth: []
tags:
  - name: Envio
    description: Envio de notificações
  - name: Status
    description: Consulta de status e provas
  - name: Templates
    description: Gerenciamento de templates
paths:
  /gw/email:
    post:
      tags:
        - Envio
      summary: Enviar notificação (AR Online)
      description: |
        Envia uma notificação por um ou mais canais em uma única requisição.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvioRequest'
            examples:
              email_simples:
                summary: E-mail simples
                value:
                  nameTo: João da Silva
                  to: joao@exemplo.com
                  subject: Documento importante
                  content: <p>Você recebeu um documento.</p>
              multicanal:
                summary: E-mail + SMS
                value:
                  nameTo: João da Silva
                  to: joao@exemplo.com
                  subject: Documento importante
                  content: <p>Você recebeu um documento.</p>
                  sms:
                    number: '11999998888'
                    typeSend: '1'
                    customMessage: 'Você recebeu um AR-Email. Acesse: {SHORT_LINK}'
      responses:
        '200':
          description: Aceito para processamento
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvioResponse'
              examples:
                unico:
                  value:
                    idEmail: 8c4813f5-8430-4ad4-ab72-19d7eed39731
        '400':
          $ref: '#/components/responses/Erro400'
        '401':
          $ref: '#/components/responses/Erro401'
        '403':
          $ref: '#/components/responses/Erro403'
        '429':
          $ref: '#/components/responses/Erro429'
        '500':
          $ref: '#/components/responses/Erro500'
components:
  schemas:
    EnvioRequest:
      type: object
      required:
        - nameTo
        - subject
        - content
      properties:
        nameTo:
          type: string
          description: Nome do destinatário
        to:
          type: string
          description: E-mail do destinatário (obrigatório quando o envio é somente e-mail)
        subject:
          type: string
        content:
          type: string
          description: Conteúdo HTML
        customID:
          type: string
          description: Referência externa para consulta posterior
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/Anexo'
        validation:
          type: object
          description: Proteção do acesso por pergunta/resposta (requer habilitação prévia)
          properties:
            question:
              type: string
            reply:
              type: string
        sms:
          $ref: '#/components/schemas/CanalSms'
        whatsapp:
          $ref: '#/components/schemas/CanalWhatsapp'
        voz:
          $ref: '#/components/schemas/CanalVoz'
        carta:
          $ref: '#/components/schemas/CanalCarta'
    EnvioResponse:
      type: object
      properties:
        idEmail:
          type: string
          example: 8c4813f5-8430-4ad4-ab72-19d7eed39731
    Anexo:
      type: object
      required:
        - name
        - base64
      properties:
        name:
          type: string
        base64:
          type: string
    CanalSms:
      type: object
      properties:
        number:
          type: string
          description: Número do celular sem máscara
        typeSend:
          type: string
          enum:
            - '1'
            - '2'
          description: >-
            1 (padrão) = envia o SMS apenas se o e-mail não for
            enviado/entregue; 2 = envia sempre
        customMessage:
          type: string
          description: Mensagem personalizada (até 140 caracteres; aceita {SHORT_LINK})
    CanalWhatsapp:
      type: object
      properties:
        number:
          type: string
        variables:
          type: object
          additionalProperties: true
          description: >-
            Variáveis do template personalizado (inclui o identificador
            'template')
    CanalVoz:
      type: object
      properties:
        number:
          type: string
        template:
          type: string
        payload:
          type: object
          additionalProperties: true
    CanalCarta:
      type: object
      properties:
        name:
          type: string
        modelo:
          type: string
        template:
          type: string
        variables:
          type: object
          additionalProperties: true
    Erro:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
        error:
          type: string
  responses:
    Erro400:
      description: Requisição inválida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            statusCode: 400
            message: >-
              O número do destinatário informado é inválido, Verifique o número
              inserido.
    Erro401:
      description: Não autorizado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            statusCode: 401
            message: Unauthorized
    Erro403:
      description: Sem permissão
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            statusCode: 403
            message: Você não tem permissão para editar este template
    Erro429:
      description: Limite de requisições excedido
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            statusCode: 429
            message: Too Many Requests
    Erro500:
      description: Erro interno
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            statusCode: 500
            message: Internal Server Error
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >
        Token JWT enviado no cabeçalho `Authorization`, **sem** o prefixo
        `Bearer`. Solicite o token de produção ao suporte
        (suporte@ar-online.com.br).

````