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

# Lance para solicitação em leilão

> Esta é a primeira requisição necessária para participação no Leilão. Ela deve ser executada após o recebimento do callback de Nova Solicitação Feita na CTPS. Por meio desta requisição, o parceiro envia seu lance para a BMP, participando do leilão interno associado à solicitação realizada pelo trabalhador.

## Endpoint

**POST** `/contrato/oferta-leilao/incluir-lance`

### Regras

* Cada parceiro pode enviar apenas **um lance por solicitação,** logo não é possível fazer o reposicionamento do lance em tempo de leilão;
* O critério de ranking é **menor taxa de juros mensal**;
* Lances enviados fora do prazo seguem regra de exceção descrita na jornada;

<RequestExample>
  ```shellscript Exemplo de requisição theme={null}
  curl --location --request POST 'https://econsignadotrabalhador.moneyp.dev.br/contrato/oferta-leilao/incluir-lance' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --header 'Authorization: Bearer {token}' \
  --data-raw '{
    "numeroSolicitacao": 1234,
    "LanceComGarantia": {
      "dataHoraValidadeLance": "2026-04-23T15:30:00.000",
      "contatos": [
        {
          "contato": "https://moneyp.com.br/",
          "tipo": 0
        },
        {
          "contato": "<telefone de contato>?text=<texto url encoded>",
          "tipo": 1
        },
        {
          "contato": "40038389",
          "tipo": 2
        },
        {
          "contato": "atendimento@moneyp.com.br",
          "tipo": 3
        }
      ],
      "valorLiberado": 300,
      "numeroParcelas": 9,
      "valorTaxaMensal": 2.45,
      "ValorSaldoDisponivelGarantiaFgts": 1000,
      "ValorMultaRescisoriaGarantiaFgts": 4000,
      "PercVerbaRescisoriaGarantia": 35
    },
    "LanceSemGarantia": {
      "dataHoraValidadeLance": "2026-04-23T15:30:00.000",
      "contatos": [
        {
          "contato": "https://moneyp.com.br/",
          "tipo": 0
        },
        {
          "contato": "<telefone de contato>?text=<texto url encoded>",
          "tipo": 1
        },
        {
          "contato": "40038389",
          "tipo": 2
        },
        {
          "contato": "atendimento@moneyp.com.br",
          "tipo": 3
        }
      ],
      "valorLiberado": 300,
      "numeroParcelas": 9,
      "valorTaxaMensal": 3.45
    }
  }'
  ```
</RequestExample>

<Accordion title="Descrição dos campos da Requisição">
  <ParamField path="numeroSolicitacao" type="number" required>
    Identificador da solicitação recebido no webhook de evento de [novas solicitações de leilão](e-consignado/leilao/novas-soliciatacoes-leilao-copied-1).
  </ParamField>

  <ParamField path="dataHoraValidadeLance" type="string<date-time>" required>
    Data e hora de validade do lance.

    Não pode ser maior que 7 dias da data e hora do lance.
  </ParamField>

  <ParamField path="contatos" type="object[]" required>
    Lista de canais de contato utilizados pelo trabalhador para dar continuidade à contratação. Deve conter obrigatoriamente ao menos um contato do tipo **URL**, que será apresentado na CTPS.

    <ParamField path="contatos[].contato" type="string">
      Valor do contato conforme o tipo informado:

      * **URL:** endereço completo
      * **WhatsApp:** telefone com query string como o exemplo \<telefone de contato>?text=\<texto url encoded>
      * **Telefone:** número de telefone para contato
      * **E-mail:** Endereço de e-mail válido
    </ParamField>

    <ParamField path="contatos[].tipo" type="number">
      Código do tipo de contato, conforme enumeração definida abaixo:

      * 0 - URL(Obrigatório)
      * 1 - WhatsApp
      * 2 - Telefone
      * 3 - E-mail
    </ParamField>
  </ParamField>

  <ParamField path="valorLiberado" type="number" required>
    Valor líquido do crédito proposto para a solicitação do trabalhador.
  </ParamField>

  <ParamField path="numeroParcelas" type="number" required>
    Quantidade de parcelas proposta para a solicitação do trabalhador.
  </ParamField>

  <ParamField path="valorTaxaMensal" type="number" required>
    Taxa de juros mensal aplicada ao lance. Deve ser maior que 0.01 e inferior a 4.98.
  </ParamField>
</Accordion>

## Responses

Há 6 possíveis responses do endpoint de inclusão de lance:

* Lance aceito dentro do leilão
  * Se for para uma solicitação com garantia, haverão dois CodigosLances.
  * Se for para uma solicitação sem garantia, haverá apenas um codigoLance
* Lance aceito fora do leilão
* Lance rejeitado por duplicidade
* Lance rejeitado por solicitação inexistente
* Lance rejeitado por solicitação expirada
* Lance rejeitado por prazo de validade superior a 7 dias

<ResponseExample>
  ```json Lance aceito dentro do leilão theme={null}
  {
  	"CodigoRequisicao": "b7ac78a4-099c-4df5-8e4b-fc5f3e11e1f7",
  	"Origem": "/contrato/oferta-leilao/incluir-lance",
  	"Conteudo": {
  		"CodigosLances": {
  			"ComGarantia": "01888fb8-93b6-43e6-83b1-5c010936beaa",
  			"SemGarantia": "b7ac78a4-099c-4df5-8e4b-fc5f3e11e1f7"
  		},
  		"Message": "Lance em leilão. Acompanhe a posição do lance no webhook pelo CodigoSolicitacaoLeilao desta solicitação."
  	},
  	"Erros": []
  }
  ```

  ```json Lance aceito fora do leilão theme={null}
  {
    "CodigoRequisicao": "string",
    "Origem": "/contrato/oferta-leilao/incluir-lance",
    "Conteudo": {
      "CodigoLanceLeilao": "GUID",
      "Mensagem": "Primeiro lance na solicitação após término do leilão. Proposta encaminhada para Dataprev."
    }
  }
  ```

  ```json Lance rejeitado por duplicidade theme={null}
  {
    "CodigoRequisicao": "string",
    "Origem": "/contrato/oferta-leilao/incluir-lance",
    "Conteudo": {},
    "Erros": [
      {
        "Codigo": "LEI_001",
        "Id": "GUID",
        "Campo": null,
        "Mensagem": "Você já fez lance neste leilão. Acompanhe a posição do lance no webhook pelo CodigoRequisicao desta solicitação"
      }
    ]
  }
  ```

  ```json Lance rejeitado por solicitação inexistente theme={null}
  {
    "CodigoRequisicao": "string",
    "Origem": "/contrato/oferta-leilao/incluir-lance",
    "Conteudo": {},
    "Erros": [
      {
        "Codigo": "LEI_002",
        "Id": "GUID",
        "Campo": null,
        "Mensagem": "Solicitação {request.numeroSolicitacao} inexistente."
      }
    ]
  }
  ```

  ```json Lance rejeitado por solicitação expirada theme={null}
  {
    "CodigoRequisicao": "string",
    "Origem": "/contrato/oferta-leilao/incluir-lance",
    "Conteudo": {},
    "Erros": [
      {
        "Codigo": "LEI_003",
        "Id": "GUID",
        "Campo": null,
        "Mensagem": "Prazo de validade da solicitação expirado em {dataValidadeSolicitacao}."
      }
    ]
  }
  ```

  ```json Lance rejeitado por prazo de validade superior a 7 dias theme={null}
  {
    "CodigoRequisicao": "string",
    "Origem": "/contrato/oferta-leilao/incluir-lance",
    "Conteudo": {},
    "Erros": [
      {
        "Codigo": "LEI_004",
        "Id": "GUID",
        "Campo": "dataHoraValidade",
        "Mensagem": "Data hora de validade da solicitação não pode ser maior que 7 dias."
      }
    ]
  }
  ```
</ResponseExample>

<Info>
  * `CodigoRequisicao` identifica a chamada à API e é usado para correlacionar eventos;
  * `CodigoLanceLeilao` identifica o lance dentro do leilão e aparece no webhook de fim de leilão;
  * No contexto de leilão, CodigoLanceLeilao corresponderá ao CodigoRequisicao.
</Info>

***

## Webhook de fim do leilão

Este webhook é disparado ao término do leilão interno de um lote de solicitações e ele informa, para cada solicitação participante do lote, a lista de lances recebidos, já ranqueados conforme o critério de menor taxa de juros.

O evento permite ao parceiro:

* Identificar se houve lances para cada solicitação;
* Verificar a posição do seu lance em relação aos demais participantes;
* Correlacionar os lances enviados anteriormente por meio do `CodigoLanceLeilao`.

O campo `CodigoLote` corresponde ao mesmo código do lote enviado no [webhook de novas solicitações de leilão](e-consignado/leilao/novas-soliciatacoes-leilao-copied-1), permitindo o rastreamento completo do ciclo do leilão.

<AccordionGroup>
  <Accordion title="Webhook de fim de leilão de lote de solicitações">
    ```json theme={null}
    {
      "Endpoint": "/contrato/oferta-leilao/fim-lote-solicitacoes",
      "Payload": {
        "Conteudo": {
          "CodigoLote": "61848733-737f-46e8-a468-48b488dd149b",
          "DataHoraInicioLeilao": "2026-06-17T14:12:20.92",
          "DataHoraFimLeilao": "2026-06-17T14:12:50.92",
          "Solicitacoes": [
            {
              "NumeroSolicitacao": "30815499",
              "Lances": [
                {
                  "CodigoLanceLeilao": "10792e33-1a43-4b8f-8625-8a575ef8d8c4",
                  "TaxaDeJurosMensal": 1,
                  "ValorLiberado": 5000,
                  "NumeroParcelas": 24,
                  "Posicao": 1,
                  "DataHoraInclusao": "2026-06-17T14:12:29.407",
                  "TemGarantias": true,
                  "ValorSaldoDisponivelGarantiaFgts": 800,
                  "ValorMultaRescisoriaGarantiaFgts": 3200,
                  "PercVerbaRescisoriaGarantia": 20
                },
                {
                  "CodigoLanceLeilao": "51ef7e3f-06b6-483c-9777-4dbb3208b3bf",
                  "TaxaDeJurosMensal": 4.98,
                  "ValorLiberado": 5000,
                  "NumeroParcelas": 24,
                  "Posicao": 1,
                  "DataHoraInclusao": "2026-06-17T14:12:29.193",
                  "TemGarantias": false,
                  "ValorSaldoDisponivelGarantiaFgts": null,
                  "ValorMultaRescisoriaGarantiaFgts": null,
                  "PercVerbaRescisoriaGarantia": null
                }
              ]
            }
          ]
        },
        "Errors": []
      }
    }
    ```
  </Accordion>

  <Accordion title="Descrição dos campos do webhook de fim de leilão de lote de solicitações">
    <ResponseField name="Endpoint" type="string">
      Identifica o evento de origem do webhook.
    </ResponseField>

    <ResponseField name="Payload" type="object">
      Conteúdo do evento.

      <ResponseField name="Payload.CodigoLote" type="string">
        Código do lote.
      </ResponseField>

      <ResponseField name="Payload.DataHoraInicioLeilao" type="string<date-time>">
        Data e hora de início do leilão.
      </ResponseField>

      <ResponseField name="Payload.DataHoraFimLeilao" type="string<date-time>">
        Data e hora de fim do leilão.
      </ResponseField>

      <ResponseField name="Solicitacoes" type="object[]">
        Lista das solicitações do lote que estavam em leilão.

        <ResponseField name="Solicitacoes[].NumeroSolicitacao" type="string">
          Número da solicitação feita pelo trabalhador.
        </ResponseField>

        <ResponseField name="Solicitacoes[].Lances" type="object[]">
          Lista de lances enviados para a solicitação durante o leilão. Quando estiver vazio, significa que nenhum parceiro enviou lance para a solicitação.

          <ResponseField name="Lances[].CodigoLanceLeilao" type="string">
            Identificador único do lance no leilão.
          </ResponseField>

          <ResponseField name="Lances[].TaxaDeJurosMensal" type="number">
            Taxa de juros mensal do lance.
          </ResponseField>

          <ResponseField name="Lances[].ValorLiberado" type="number">
            Valor liberado do lance.
          </ResponseField>

          <ResponseField name="Lances[].NumeroParcelas" type="number">
            Número de parcelas do lance.
          </ResponseField>

          <ResponseField name="Lances[].Posicao" type="number">
            Posição do lance no ranking com relação aos demais lances.
          </ResponseField>

          <ResponseField name="Lances[].DataHoraInclusao" type="string<date-time>">
            Data e hora de inclusão do lance.
          </ResponseField>
        </ResponseField>
      </ResponseField>
    </ResponseField>
  </Accordion>

  <Accordion title="Webhook de confirmação de ganho de leilão interno">
    Este evento é enviado ao ganhador do leilão para confirmar a conclusão do leilão interno na BMP. O lance feito será encaminhado para a Dataprev.

    ```json theme={null}
    {
      "CodigoRequisicao": "3dec911c-4785-4aa1-a159-0c5636205a1f",
      "Endpoint": "/contrato/oferta-leilao/incluir-lance",
      "Payload": {
        "Conteudo": {
          "Mensagem": "Sua proposta para a Solicitação n.º {NumeroSolicitacao} foi contemplada e será encaminhada à DataPrev"
        },
        "Erros": []
      }
    }
    ```
  </Accordion>

  <Accordion title="Webhook de confirmação de inclusão do lance na Dataprev">
    Este evento é enviado ao ganhador do leilão após a mensagem da Dataprev quanto a inclusão da proposta. Este evento confirma que a proposta está disponível para o trabalhador no aplicativo da CTPS.

    ```json theme={null}
    {
      "CodigoRequisicao": "3dec911c-4785-4aa1-a159-0c5636205a1f",
      "Endpoint": "/contrato/oferta-leilao/incluir-lance",
      "Payload": {
        "conteudo": {
          "codigo": "BD",
          "mensagem": "Inclusão efetuada com sucesso",
          "numeroProposta": "{NumeroSolicitacao}",
          "idSolicitacaoResposta": 0,
          "hashOperacao": 0,
          "dataHoraValidadeProposta": "dataHoraValidadeLance em formato ddmmaaaahhmmss"
        },
        "errors": [],
        "hashOperacao": ""
      }
    }
    ```
  </Accordion>
</AccordionGroup>

<Warning>
  Considerando que 1. Não é mais possível o reposicionamento em tempo de leilão e 2. O evento de fim de leilão já informa o posicionamento do parceiro, então não é mais enviado o evento que informa o posicionamento do parceiro em **tempo de leilão**, apenas no término do leilão.
</Warning>
