# `sales_order.finish_packing`

Pedido embalado.

A Kernos faz o POST no endereço cadastrado no webhook da conexão. Responda 2xx em até 10 s; sem isso, ela tenta de novo com espera crescente (30 s × 2ⁿ, até 1 h) por 3 dias. Confira a `Kernos-Signature` antes de confiar no corpo.

## Cabeçalhos

- `Kernos-Signature` (string, obrigatório): `t=<unix>,v1=<hex>`, com `v1 = HMAC-SHA256(webhook_secret, "<t>.<corpo>")`. Recuse `t` velho: barra o replay.
- `Kernos-Event-Id` (uuid, obrigatório): O id do evento: o mesmo em cada nova tentativa. Use para não processar duas vezes.

## Corpo

- `created_at` (data e hora, obrigatório)
- `data` (objeto, obrigatório)
  - `id` (uuid)
  - `order_ref` (string)
  - `packages` (integer)
  - `status` ("packed")
  - `units` (integer)
  - `weight_g` (integer): O peso de todos os volumes, em gramas.
- `id` (uuid, obrigatório): O id do fato, igual ao `Kernos-Event-Id`.
- `object` (objeto, obrigatório)
  - `id` (uuid)
  - `type` ("sales_order")
- `tenant` (string, obrigatório): A empresa, pelo endereço (`minha-empresa` em `minha-empresa.kernos.com.br`).
- `type` ("sales_order.finish_packing", obrigatório)

## Exemplo

A forma do corpo, sem dado real.

**sales_order.finish_packing**

```json
{
  "created_at": "2026-10-03T12:00:00Z",
  "data": {
    "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
    "order_ref": "…",
    "packages": 0,
    "status": "packed",
    "units": 0,
    "weight_g": 0
  },
  "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
  "object": {
    "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
    "type": "sales_order"
  },
  "tenant": "…",
  "type": "sales_order.finish_packing"
}
```
