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

# Enviar mensagem na corrida como condutor

> Envia uma mensagem na conversa entre passageiro e condutor de uma corrida pedida pelo app do passageiro. A mensagem é gravada como sendo do **condutor** da corrida — é essa a identidade que o passageiro vê no app dele — e dispara o push de mensagem nova no aplicativo do passageiro.

Só a corrida pedida pelo app do passageiro, atendida por um condutor do parceiro e com o chat habilitado aceita mensagem por este endpoint. Na corrida de repasse, quem fala pelo condutor é a central que atende a corrida.

**O texto é sanitizado:** marcação HTML é removida e emoji é descartado, mas os demais caracteres chegam ao passageiro como você os enviou.



## OpenAPI

````yaml pages/v2/openapi-corridas.json POST /mensagens/corridas/condutor
openapi: 3.1.0
info:
  title: API de Integração
  description: API de Integração v2 - Corridas
  license:
    name: MIT
  version: 2.0.0
servers:
  - url: https://api-vendas.taximachine.com.br/api/v2/integracao
  - url: https://api.taximachine.com.br/api/v2/integracao
security:
  - basicAuth: []
    ApiKeyAuth: []
paths:
  /mensagens/corridas/condutor:
    post:
      summary: Enviar mensagem na conversa da corrida como condutor
      description: >-
        Envia uma mensagem na conversa entre passageiro e condutor de uma
        corrida pedida pelo app do passageiro. A mensagem é gravada como sendo
        do **condutor** da corrida — é essa a identidade que o passageiro vê no
        app dele — e dispara o push de mensagem nova no aplicativo do
        passageiro.


        Só a corrida pedida pelo app do passageiro, atendida por um condutor do
        parceiro e com o chat habilitado aceita mensagem por este endpoint. Na
        corrida de repasse, quem fala pelo condutor é a central que atende a
        corrida.


        **O texto é sanitizado:** marcação HTML é removida e emoji é descartado,
        mas os demais caracteres chegam ao passageiro como você os enviou.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - solicitacao_id
                - condutor_id
                - mensagem
              properties:
                solicitacao_id:
                  type: integer
                  description: ID da corrida (solicitação) na qual a mensagem será enviada.
                  example: 639
                condutor_id:
                  type: integer
                  description: >-
                    ID do condutor da corrida. Precisa corresponder ao condutor
                    da solicitação informada. Ele vem como `condutor_id` na
                    resposta da criação da corrida, quando ela já nasce com
                    condutor definido, e também na consulta da corrida.
                  example: 12
                mensagem:
                  type: string
                  description: >-
                    Conteúdo da mensagem. Máximo de 10.000 caracteres. Marcação
                    HTML e emoji são removidos; os demais caracteres chegam ao
                    passageiro como enviados.
                  maxLength: 10000
                  example: Estou no portão principal.
      responses:
        '201':
          description: Mensagem gravada como do condutor e push enviado ao passageiro
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      solicitacao_id:
                        type: integer
                      condutor_id:
                        type: integer
                      conversa_id:
                        type: integer
                        description: Conversa da corrida em que a mensagem foi gravada.
                      sequencial:
                        type: integer
                        description: >-
                          Posição da mensagem gravada na conversa. É o mesmo
                          `sequencial` que a leitura devolve.
                  message:
                    type: string
                  __links:
                    type: object
                    description: Links HATEOAS do domínio, indexados pelo rel.
              example:
                success: true
                data:
                  solicitacao_id: 639
                  condutor_id: 12
                  conversa_id: 8
                  sequencial: 3
                message: Mensagem enviada com sucesso.
                __links:
                  self:
                    href: api/v2/integracao/mensagens/corridas/condutor
                    metodo: post
                  listar-mensagens-corrida-condutor:
                    href: api/v2/integracao/mensagens/corridas/condutor/{id}
                    metodo: get
        '400':
          description: Erro de validação ou de regra de negócio
          content:
            application/json:
              schema:
                type: object
              examples:
                campo_obrigatorio:
                  summary: Campo obrigatório ausente
                  value:
                    success: false
                    errors:
                      - code: 2
                        message: '''mensagem'': Preenchimento obrigatório'
                id_nao_numerico:
                  summary: Identificador que não é número
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: '''condutor_id'': Deve ser numérico.'
                id_nao_inteiro:
                  summary: >-
                    Identificador com sinal, espaço, casa decimal ou zero à
                    esquerda
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: >-
                          'solicitacao_id': Deve ser um número inteiro positivo,
                          sem sinal, espaço ou casa decimal.
                mensagem_longa:
                  summary: Mensagem acima de 10.000 caracteres
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: '''mensagem'': Deve ter no máximo 10000 caracteres.'
                corpo_nao_json:
                  summary: Corpo que não é JSON
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: JSON inválido
                texto_vazio:
                  summary: Texto vazio depois de remover HTML e emoji
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: O texto da mensagem não pode ficar vazio.
                corrida_outra_central:
                  summary: >-
                    Central que recebeu o pedido numa corrida de repasse (só a
                    central que atende a corrida fala pelo condutor)
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: >-
                          Só a central que atende a corrida pode trocar
                          mensagens pelo condutor.
                corrida_sem_condutor_do_parceiro:
                  summary: >-
                    Corrida que não foi pedida pelo app do passageiro, ou em que
                    o condutor não é do parceiro
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: A conversa da corrida não está disponível.
                fora_da_janela:
                  summary: Corrida fora dos status aceita, em espera e em andamento
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: A corrida não está em andamento.
                condutor_divergente:
                  summary: condutor_id não é o condutor da corrida
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: O condutor informado não é o condutor da corrida.
                sem_condutor:
                  summary: Corrida ainda sem condutor
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: A corrida ainda não tem condutor.
                condutor_sem_usuario:
                  summary: Condutor da corrida sem usuário vinculado
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: Não foi possível identificar o usuário do condutor.
                conversa_indisponivel:
                  summary: Central não permite mensagem entre passageiro e condutor
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: A conversa da corrida não está disponível.
                conversa_empresa_condutor:
                  summary: A conversa da corrida é entre empresa e condutor
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: A conversa desta corrida é entre empresa e condutor.
                nao_enviada:
                  summary: Falha ao gravar a mensagem
                  value:
                    success: false
                    errors:
                      - code: 0
                        message: Não foi possível enviar a mensagem.
        '401':
          description: Credenciais ausentes ou inválidas
          content:
            application/json:
              schema:
                type: object
              examples:
                gestor_invalido:
                  summary: Usuário ou senha do Basic Auth inválidos
                  value:
                    success: false
                    errors:
                      - code: 401
                        message: Usuário e/ou senhas inválidos.
                api_key_invalida:
                  summary: Api-Key ausente ou sem bandeira
                  value:
                    success: false
                    errors:
                      - code: 401
                        message: Você não está autorizado a acessar este recurso.
        '404':
          description: Corrida não encontrada no escopo do parceiro
          content:
            application/json:
              schema:
                type: object
              example:
                success: false
                errors:
                  - code: 404
                    message: Solicitação não encontrada.
        '429':
          description: >-
            Limite de requisições excedido. Os limites estão na tabela de rate
            limit da introdução.
          content:
            application/json:
              schema:
                type: object
              example:
                success: false
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api-key
      description: Obrigatório. Sua chave API.

````