> ## 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.

# Inspeções (Vistorias)

> Vistorias de entrada, saída, rotina e emergência com snapshot automático do inventário.

## Visão Geral

Uma inspeção é um registro formal do estado do imóvel em um dado momento. Ao criar uma vistoria, a API captura automaticamente um **snapshot** do inventário ativo do imóvel — preservando o estado de cada item naquele instante, independente de alterações futuras.

## O objeto Inspeção

```json theme={null}
{
  "id": "vis001",
  "imovelId": "abc123",
  "tipo": "Entrada",
  "dataVistoria": "2025-02-01",
  "descricao": "Vistoria de entrada do locatário João da Silva.",
  "status": "rascunho",
  "fotosKeys": [],
  "videosKeys": [],
  "itensVistoriados": [
    {
      "itemId": "inv001",
      "condicaoAtual": "Bom",
      "observacao": "Pequeno arranhão na lateral.",
      "fotosUrls": []
    }
  ],
  "snapshotInventario": [
    {
      "id": "inv001",
      "nomeItem": "Sofá 3 lugares",
      "categoria": "Móvel",
      "quantidade": 1,
      "condicaoOriginal": "Ótimo",
      "ean": "N/A",
      "fotosOriginais": ["https://..."]
    }
  ],
  "userId": "uid_do_usuario",
  "criadoEm": "2025-02-01T10:00:00.000Z"
}
```

### Tipos válidos

| Valor        | Uso                                 |
| ------------ | ----------------------------------- |
| `Entrada`    | Início de contrato                  |
| `Saída`      | Encerramento de contrato            |
| `Rotina`     | Vistoria periódica                  |
| `Emergência` | Situação eventual (vazamento, etc.) |

### `snapshotInventario`

Array somente-leitura, populado automaticamente no `POST`. Representa o estado exato do inventário no momento da criação. Não pode ser alterado via `PATCH`.

### `itensVistoriados`

Array editável com a avaliação de cada item durante a inspeção. Cada entrada segue o formato:

```json theme={null}
{
  "itemId": "inv001",
  "condicaoAtual": "Bom",
  "observacao": "Texto livre",
  "fotosUrls": ["https://..."]
}
```

***

## Criar vistoria

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

<ParamField body="tipo" type="string" required>
  Um dos tipos válidos: `Entrada`, `Saída`, `Rotina`, `Emergência`.
</ParamField>

<ParamField body="dataVistoria" type="string" required>
  Data da vistoria no formato `YYYY-MM-DD`.
</ParamField>

<ParamField body="descricao" type="string">
  Observações gerais da vistoria.
</ParamField>

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

{
  "imovelId": "abc123",
  "tipo": "Entrada",
  "dataVistoria": "2025-02-01",
  "descricao": "Vistoria de entrada realizada com locatário presente."
}
```

```json Resposta 201 theme={null}
{
  "id": "vis001",
  "imovelId": "abc123",
  "tipo": "Entrada",
  "snapshotInventario": [ ... ],
  ...
}
```

***

## Listar vistorias por imóvel

Ordenadas por `dataVistoria` decrescente.

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

***

## Buscar vistoria por ID

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

***

## Atualizar vistoria

Permite editar `itensVistoriados`, `fotosKeys`, `videosKeys`, `status` e `descricao`. Os campos `imovelId`, `userId` e `snapshotInventario` são protegidos e ignorados mesmo que enviados.

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

{
  "status": "concluida",
  "itensVistoriados": [
    {
      "itemId": "inv001",
      "condicaoAtual": "Regular",
      "observacao": "Desgaste natural."
    }
  ]
}
```

***

## Sincronizar com inventário

Aplica as condições avaliadas na vistoria (`itensVistoriados`) de volta ao inventário real do imóvel. Apenas itens com `condicaoAtual` diferente de `"Não verificado"` são atualizados.

```http theme={null}
POST /inspecoes/:id/sincronizar-inventario
Cookie: imob_session=<session_cookie>
```

```json Resposta 200 theme={null}
{
  "message": "Inventário atualizado com sucesso.",
  "atualizados": 5
}
```

<Info>
  Este endpoint é tipicamente chamado ao **concluir** uma vistoria de saída, para refletir o estado final dos itens no inventário.
</Info>

***

## Deletar vistoria

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