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

# Atualizar Deal

> Atualiza um deal existente. Pelo menos um campo deve ser fornecido no corpo da requisicao.



## OpenAPI

````yaml PATCH /deal/{dealId}
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:
  /deal/{dealId}:
    patch:
      tags:
        - Deals
      summary: Atualizar Deal
      description: >-
        Atualiza um deal existente. Pelo menos um campo deve ser fornecido no
        corpo da requisicao.
      operationId: updateDeal
      parameters:
        - name: dealId
          in: path
          required: true
          description: Identificador unico do deal na Morada
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDealRequest'
            examples:
              atualizarStatus:
                summary: Atualizar status e stage
                value:
                  status: won
                  stageCode: closed_won
              atualizarPropriedade:
                summary: Atualizar propriedade
                value:
                  propertyExternalId: PROP-EXT-789
              atualizarResponsavel:
                summary: Atualizar responsavel
                value:
                  ownerEmail: novo.responsavel@empresa.com
      responses:
        '202':
          description: Atualizacao aceita
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateDealResponse'
              example:
                message: Deal update accepted
        '400':
          description: Requisicao invalida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                apiKeyAusente:
                  summary: API key ausente
                  value:
                    error: Unauthorized - Missing API key
                dealIdAusente:
                  summary: Deal ID ausente
                  value:
                    error: Deal ID is required
                bodyAusente:
                  summary: Body ausente
                  value:
                    error: Missing body
                jsonInvalido:
                  summary: JSON invalido
                  value:
                    error: Invalid JSON body
                nenhumCampoFornecido:
                  summary: Nenhum campo fornecido
                  value:
                    error: >-
                      [{"code":"custom","message":"At least one property must be
                      provided for update.","path":[]}]
                statusInvalido:
                  summary: Status invalido
                  value:
                    error: >-
                      [{"received":"invalid_status","code":"invalid_enum_value","options":["won","lost","closed","open"],"path":["status"],"message":"Invalid
                      enum value. Expected 'won' | 'lost' | 'closed' | 'open',
                      received 'invalid_status'"}]
                emailInvalido:
                  summary: Email invalido
                  value:
                    error: >-
                      [{"validation":"email","code":"invalid_string","message":"Invalid
                      email","path":["ownerEmail"]}]
                campoNaoReconhecido:
                  summary: Campo nao reconhecido
                  value:
                    error: >-
                      [{"code":"unrecognized_keys","keys":["unknownField"],"path":[],"message":"Unrecognized
                      key(s) in object: 'unknownField'"}]
        '401':
          description: Nao autorizado - API key invalida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Unauthorized - Invalid API key
        '404':
          description: Deal nao encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                dealNaoEncontrado:
                  summary: Deal nao encontrado
                  value:
                    error: Not Found - Deal not found
                dealDeOutroParceiro:
                  summary: Deal nao pertence ao parceiro
                  value:
                    error: Not Found - Deal not found
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Internal Server Error
      security:
        - apiKey: []
components:
  schemas:
    UpdateDealRequest:
      type: object
      description: Pelo menos um campo deve ser fornecido. Campos extras sao rejeitados.
      properties:
        status:
          type: string
          enum:
            - won
            - lost
            - closed
            - open
          description: Novo status do deal
        stageCode:
          type: string
          enum:
            - transferred
            - in_qualification
            - waiting_service
            - in_service
            - visit_scheduled
            - visit_completed
            - closed_won
            - closed_lost
            - negotiating
          description: Novo codigo de estagio do deal
        propertyExternalId:
          type: string
          description: ID externo da propriedade vinculada ao deal
        ownerEmail:
          type: string
          format: email
          description: Email do novo responsavel pelo deal
      additionalProperties: false
    UpdateDealResponse:
      type: object
      properties:
        message:
          type: string
          description: Mensagem de confirmacao da atualizacao
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Mensagem de erro
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-morada-api-key
      description: Chave de API do parceiro. Fornecida pelo time da Morada.ai.

````