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

# Inventário

> Controle de itens do imóvel com geração automática de código, soft delete e histórico preservado para vistorias.

## Visão Geral

Cada imóvel pode ter um inventário de itens — móveis, eletrodomésticos, chaves, etc. Itens removidos usam **soft delete** (`ativo: false`), preservando o histórico para uso em vistorias já criadas.

## O objeto Item

```json theme={null}
{
  "id": "inv001",
  "imovelId": "abc123",
  "nomeItem": "Sofá 3 lugares",
  "categoria": "Móvel",
  "quantidade": 1,
  "condicao": "Ótimo",
  "observacoes": "Sofá de couro marrom, sem defeitos.",
  "fotosUrls": ["https://..."],
  "codigoBarras": "",
  "codigoItem": "ABC1-MOV-001",
  "ativo": true,
  "userId": "uid_do_usuario",
  "criadoEm": "2025-01-10T10:00:00.000Z",
  "atualizadoEm": "2025-01-10T10:00:00.000Z"
}
```

### `codigoItem`

Gerado automaticamente no formato `{imovelId[0:4]}-{categoria[0:3]}-{seq}`. Exemplo: `ABC1-MOV-001`. Não pode ser alterado após a criação.

### Categorias válidas

`Móvel`, `Eletrodoméstico`, `Eletrônico`, `Chave`, `Utensílio`, `Outro`

### Condições válidas

`Ótimo`, `Bom`, `Regular`, `Ruim`

***

## Criar item

<ParamField body="imovelId" type="string" required>
  ID do imóvel. Deve pertencer ao usuário autenticado.
</ParamField>

<ParamField body="nomeItem" type="string" required>
  Nome descritivo do item.
</ParamField>

<ParamField body="categoria" type="string" required>
  Uma das categorias válidas.
</ParamField>

<ParamField body="quantidade" type="number" default="1">
  Quantidade de unidades.
</ParamField>

<ParamField body="condicao" type="string" default="Bom">
  Uma das condições válidas.
</ParamField>

<ParamField body="codigoBarras" type="string">
  EAN ou código de barras do produto. Opcional.
</ParamField>

```http theme={null}
POST /inventario
Cookie: imob_session=<session_cookie>
Content-Type: application/json

{
  "imovelId": "abc123",
  "nomeItem": "Sofá 3 lugares",
  "categoria": "Móvel",
  "quantidade": 1,
  "condicao": "Ótimo"
}
```

```json Resposta 201 theme={null}
{
  "id": "inv001",
  "codigoItem": "ABC1-MOV-001",
  ...
}
```

***

## Listar itens do imóvel

Retorna apenas itens com `ativo: true`, ordenados por `categoria` e depois por `nomeItem`.

```http theme={null}
GET /inventario/imovel/:imovelId
Cookie: imob_session=<session_cookie>
```

***

## Buscar item por ID

```http theme={null}
GET /inventario/:id
Cookie: imob_session=<session_cookie>
```

***

## Atualizar item

Os campos `codigoItem`, `imovelId` e `userId` são protegidos e ignorados mesmo que enviados no body.

```http theme={null}
PATCH /inventario/:id
Cookie: imob_session=<session_cookie>
Content-Type: application/json

{
  "condicao": "Regular",
  "observacoes": "Desgaste natural após uso."
}
```

***

## Remover item (soft delete)

O item não é apagado do banco — apenas marcado com `ativo: false` e `removidoEm`. Isso preserva referências em vistorias históricas.

```http theme={null}
DELETE /inventario/:id
Cookie: imob_session=<session_cookie>
```

```json Resposta 200 theme={null}
{
  "message": "Item removido do inventário."
}
```
