> ## 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.

# Criar Deal

> Cria um novo deal na plataforma e opcionalmente inicia uma conversa no WhatsApp via template de mensagem.



## OpenAPI

````yaml POST /{partnerId}/deal
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:
  /{partnerId}/deal:
    post:
      tags:
        - Deals
      summary: Criar Deal
      description: >-
        Cria um novo deal na plataforma e opcionalmente inicia uma conversa no
        WhatsApp via template de mensagem.
      operationId: createDeal
      parameters:
        - name: partnerId
          in: path
          required: true
          description: ID do parceiro
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDealRequest'
            examples:
              dealComTemplate:
                summary: Deal com template de mensagem
                value:
                  name: Joao Silva
                  phoneNumber: '+5511999999999'
                  email: joao@email.com
                  productId: prod-123
                  source: Website
                  messageTemplate: message_template_name
                  replacements:
                    - Joao Silva
              dealSemTemplate:
                summary: Deal sem template de mensagem
                value:
                  name: Maria Santos
                  phoneNumber: '+5511888888888'
                  email: maria@email.com
                  productId: prod-456
                  source: Facebook
              dealCompleto:
                summary: Deal completo com todos os campos
                value:
                  name: Joao Silva
                  phoneNumber: '+5511999999999'
                  email: joao@email.com
                  productId: prod-123
                  productExternalId: ext-prod-123
                  conversionIdentifier: SITE-1234
                  bypassProductCheck: false
                  source: Website
                  messageTemplate: message_template_name
                  replacements:
                    - Joao Silva
                    - Produto X
                  instanceId: 1
                  externalId: ext-deal-001
                  variantId: variant-abc
                  extras:
                    campaign: campanha-verao
                    medium: google-ads
                    returnUrl: https://parceiro.com/obrigado
                  specialInstructions: Direcione o lead para o empreendimento XYZ
      responses:
        '200':
          description: Deal criado ou atualizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDealResponse'
              examples:
                dealCriado:
                  summary: Deal criado com sucesso
                  value:
                    dealId: 4d375b3b-0bfe-4326-8404-47b3e5a4c5d2
                    message: Deal created successfully
                dealCriadoSemTemplate:
                  summary: Deal criado sem template de mensagem
                  value:
                    dealId: 4d375b3b-0bfe-4326-8404-47b3e5a4c5d2
                    message: >-
                      Deal created successfully without conversation (no message
                      template)
                dealAtualizado:
                  summary: Deal atualizado (conversa ja existe)
                  value:
                    message: Deal updated successfully. Conversation already open
                    dealId: 4d375b3b-0bfe-4326-8404-47b3e5a4c5d2
                    conversationId: 4d375b3b-0bfe-4326-8404-47b3e5a4c5d2
                criacaoPulada:
                  summary: Criacao pulada (horario de atendimento)
                  value:
                    message: Lead creation skipped during service hours
                    skipped: true
        '400':
          description: Requisicao invalida - erro de validacao
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              examples:
                bodyAusente:
                  summary: Body ausente
                  value: Missing body
                jsonInvalido:
                  summary: JSON invalido
                  value: Invalid JSON in body
                nomeObrigatorio:
                  summary: Validacao de payload (nome obrigatorio)
                  value:
                    - code: invalid_type
                      expected: string
                      received: undefined
                      path:
                        - name
                      message: Required
                telefoneInvalido:
                  summary: Telefone invalido
                  value:
                    - code: custom
                      message: Invalid phone number
                      path:
                        - phoneNumber
                emailInvalido:
                  summary: Email invalido
                  value:
                    - code: invalid_string
                      validation: email
                      message: Invalid email
                      path:
                        - email
                partnerIdAusente:
                  summary: partnerId ausente
                  value: Missing partnerId
                productExternalIdInvalido:
                  summary: productExternalId invalido
                  value:
                    message: Invalid productExternalId
                instanciaNaoEncontrada:
                  summary: Instancia nao encontrada
                  value:
                    message: No instance found. Skipping deal creation
                dealNaoCriado:
                  summary: Deal nao criado
                  value:
                    message: Deal not created
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
              example: Internal Server Error
components:
  schemas:
    CreateDealRequest:
      type: object
      required:
        - name
        - phoneNumber
        - source
      properties:
        name:
          type: string
          description: Nome completo do lead
        phoneNumber:
          type:
            - string
            - number
          description: >-
            Telefone valido do lead com DDD. DDI e opcional (assume 55 se
            ausente).
        email:
          type: string
          format: email
          description: Email valido do lead
        productId:
          type: string
          description: ID do produto/propriedade na plataforma M.I.A
        productExternalId:
          type: string
          description: ID externo do produto no CRM ou plataforma do cliente
        partnerId:
          type: string
          description: ID do parceiro (caso nao venha pelo path)
        conversionIdentifier:
          type: string
          description: Identificador da conversao para rastreamento
        bypassProductCheck:
          type: boolean
          description: Pular validacao de produto
        source:
          type: string
          description: 'Origem do lead (ex: Website, Facebook, Simulador)'
        messageTemplate:
          type: string
          description: Template de mensagem WhatsApp para iniciar conversa com a MIA
        replacements:
          type: array
          items:
            type: string
          description: Substituicoes para os placeholders do template
        instanceId:
          type:
            - string
            - number
          description: ID da instancia do bot
        externalId:
          type:
            - string
            - number
          description: ID externo do deal
        variantId:
          type: string
          description: ID da variante
        extras:
          oneOf:
            - type: object
              additionalProperties: true
            - type: string
          description: >-
            Dados extras que podem ser usados em integracoes. Pode ser um objeto
            JSON ou uma JSON string.
        specialInstructions:
          type: string
          description: Instrucoes especiais para a MIA durante a conversa
    CreateDealResponse:
      type: object
      properties:
        dealId:
          type: string
          description: Identificador unico do deal criado
        message:
          type: string
          description: Mensagem descritiva do resultado da operacao
        conversationId:
          type: string
          description: ID da conversa (quando ja existia uma conversa aberta)
        skipped:
          type: boolean
          description: 'Indica se a criacao foi pulada (ex: horario de atendimento)'
    ValidationError:
      description: >-
        Erro de validacao. Pode ser uma string simples ou um array de objetos de
        erro.
      oneOf:
        - type: string
        - type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: Codigo do erro de validacao
              message:
                type: string
                description: Mensagem descritiva do erro
              path:
                type: array
                items:
                  type: string
                description: Caminho do campo que gerou o erro
              expected:
                type: string
                description: Tipo esperado
              received:
                type: string
                description: Tipo recebido
              validation:
                type: string
                description: Tipo de validacao que falhou
        - type: object
          properties:
            message:
              type: string
              description: Mensagem de erro
    InternalServerError:
      type: string
      description: Mensagem de erro interno do servidor
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-morada-api-key
      description: Chave de API do parceiro. Fornecida pelo time da Morada.ai.

````