# `package.close`

Volume fechado.

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)
  - `scans` (integer): Quantos bipes o volume recebeu.
  - `seq` (integer): O número do volume no pedido.
  - `status` ("closed")
  - `units` (integer)
  - `weight_g` (integer)
- `id` (uuid, obrigatório): O id do fato, igual ao `Kernos-Event-Id`.
- `object` (objeto, obrigatório)
  - `id` (uuid)
  - `type` ("package")
- `tenant` (string, obrigatório): A empresa, pelo endereço (`minha-empresa` em `minha-empresa.kernos.com.br`).
- `type` ("package.close", obrigatório)

## Exemplo

A forma do corpo, sem dado real.

**package.close**

```json
{
  "created_at": "2026-10-03T12:00:00Z",
  "data": {
    "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
    "scans": 0,
    "seq": 0,
    "status": "closed",
    "units": 0,
    "weight_g": 0
  },
  "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
  "object": {
    "id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
    "type": "package"
  },
  "tenant": "…",
  "type": "package.close"
}
```
