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

# Confirme o código de entrega

> Valide o código de uma entrega.

Use este endpoint quando um operador de logística precisar validar o código informado pelo cliente.

## Autenticação

Como todos os endpoints de logística, este **não** usa o Bearer token OAuth. É autenticado por três headers HTTP:

<ParamField header="X-App-Id" type="string (uuid)" required>
  Identificador da sua aplicação de logística (UUID v4).
</ParamField>

<ParamField header="X-App-MerchantId" type="string" required>
  Identificador do merchant no contexto da sua integração (entre 36 e 100 caracteres).
</ParamField>

<ParamField header="X-App-Signature" type="string" required>
  Assinatura HMAC-SHA256 (hex, 64 caracteres) do corpo cru da requisição, calculada com o `client_secret` da sua integração de logística como chave.
</ParamField>

## Corpo da requisição

O corpo da requisição deve ser enviado como `application/json`.

<ParamField body="orderId" type="string (uuid)" required>
  Identificador do pedido gerado pela Onbeef, fornecido quando a entrega foi solicitada.
</ParamField>

<ParamField body="deliveryCode" type="string" required>
  Código de confirmação informado pelo cliente na porta. Envie-o exatamente como o cliente apresenta.
</ParamField>

## Resposta

### 200: Código confirmado

O código está correto. A entrega pode prosseguir. O corpo da resposta ecoa `orderId` e `deliveryCode`.

<ResponseField name="orderId" type="string (uuid)">
  Identificador do pedido validado.
</ResponseField>

<ResponseField name="deliveryCode" type="string">
  Código de confirmação validado com sucesso.
</ResponseField>

### 400: Código inválido

O código não corresponde ao esperado para este pedido. Corpo: `{ "title": "Invalid code provided", "status": 400 }`. Não marque o pedido como entregue.

### 401: Não autorizado

Os headers `X-App-*` não foram reconhecidos, a integração não está ativa, ou a assinatura não confere.

## Exemplo de requisição

```bash theme={null}
curl --request POST \
  --url "https://api.dev.connect.onbeefapp.com.br/v1/logistics/confirmationCode" \
  --header "Content-Type: application/json" \
  --header "X-App-Id: <app_uuid>" \
  --header "X-App-MerchantId: <merchant_id>" \
  --header "X-App-Signature: <hmac_sha256_do_corpo>" \
  --data '{
    "orderId": "b3e1eced-f2bd-4d8c-9765-fbc9d1d222d5",
    "deliveryCode": "8X4K2"
  }'
```

## Exemplo de resposta

```json theme={null}
{
  "orderId": "b3e1eced-f2bd-4d8c-9765-fbc9d1d222d5",
  "deliveryCode": "8X4K2"
}
```

## Relação com a validação de pedido

Este endpoint é a entrada do lado da **logística** para a verificação do código, autenticada por headers `X-App-*`.

Do **lado do merchant/PDV**, o endpoint equivalente [`POST /v1/orders/{orderId}/validateCode`](/api-reference/orders/validate-delivery-code) tem o mesmo propósito, mas é autenticado com um Bearer token de merchant. Ambos verificam o mesmo código: a diferença é qual parte está fazendo a checagem e quais credenciais são usadas.

<Warning>
  Uma resposta `400` significa que o código não bateu. **Não entregue o pedido** até receber uma resposta `200`. Se as tentativas repetidas falharem, escale pelo canal de suporte: não pule a validação.
</Warning>
