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

# Imóveis

> Cadastro e gestão de imóveis. Suporte a fotos, vídeos e múltiplos tipos de locação.

## O objeto Imóvel

```json theme={null}
{
  "id": "abc123",
  "nome": "Apto Centro",
  "rua": "Rua das Flores",
  "numero": "123",
  "complemento": "Apto 42",
  "bairro": "Centro",
  "cidade": "São Paulo",
  "estado": "SP",
  "cep": "01310-100",
  "quartos": 2,
  "suites": 1,
  "banheiros": 2,
  "vagas": 1,
  "area": 65,
  "areaTotal": 70,
  "andar": 4,
  "tipoImovel": "Apartamento",
  "tipoLocacao": "Residencial",
  "valorAluguel": "2500",
  "valorCondominio": "450",
  "valorIPTU": "120",
  "aceitaPets": true,
  "mobiliado": "Semi-mobiliado",
  "descricao": "Apartamento reformado, próximo ao metrô.",
  "status": "DISPONIVEL",
  "fotosKeys": [
    { "key": "imoveis/abc123/foto1.jpg", "url": "https://..." }
  ],
  "fotoCapa": "https://...",
  "nomeExibicao": "Apto Centro",
  "userId": "uid_do_usuario",
  "criadoEm": "2025-01-10T14:00:00.000Z"
}
```

### Campos calculados

| Campo          | Descrição                                                                         |
| -------------- | --------------------------------------------------------------------------------- |
| `fotoCapa`     | Primeira imagem do array `fotosKeys` que não seja vídeo. Fallback: primeiro item. |
| `nomeExibicao` | `nome` se preenchido; caso contrário, `"${rua}, ${numero}"`.                      |

***

## Criar imóvel

<ParamField body="cep" type="string" required>
  CEP do imóvel.
</ParamField>

<ParamField body="rua" type="string" required>
  Logradouro.
</ParamField>

<ParamField body="numero" type="string" required>
  Número do imóvel.
</ParamField>

<ParamField body="bairro" type="string" required>
  Bairro.
</ParamField>

<ParamField body="cidade" type="string" required>
  Cidade.
</ParamField>

<ParamField body="estado" type="string" required>
  UF (ex: `SP`, `RJ`).
</ParamField>

<ParamField body="nome" type="string">
  Apelido do imóvel. Se não informado, o `nomeExibicao` usa o endereço.
</ParamField>

<ParamField body="status" type="string" default="DISPONIVEL">
  Status do imóvel. Valores: `DISPONIVEL`, `ALUGADO`, `MANUTENCAO`.
</ParamField>

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

{
  "cep": "01310-100",
  "rua": "Rua das Flores",
  "numero": "123",
  "bairro": "Centro",
  "cidade": "São Paulo",
  "estado": "SP",
  "nome": "Apto Centro",
  "quartos": 2,
  "valorAluguel": "2500"
}
```

```json Resposta 201 theme={null}
{
  "message": "Imovel cadastrado com sucesso",
  "id": "abc123"
}
```

***

## Listar imóveis

Retorna todos os imóveis do usuário autenticado, sem paginação. Ordenação em memória por `criadoEm` desc.

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

```json Resposta 200 theme={null}
[
  {
    "id": "abc123",
    "nomeExibicao": "Apto Centro",
    "fotoCapa": "https://...",
    "status": "DISPONIVEL",
    ...
  }
]
```

***

## Buscar imóvel por ID

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

***

## Atualizar imóvel

Aceita qualquer subconjunto de campos. Retorna `404` se não existir, `403` se pertencer a outro usuário.

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

{
  "status": "ALUGADO",
  "valorAluguel": "2800"
}
```

```json Resposta 200 theme={null}
{
  "message": "Imovel atualizado com sucesso"
}
```

***

## Deletar imóvel

<Warning>
  A deleção é permanente (hard delete). Certifique-se de que não há contratos ativos vinculados antes de remover.
</Warning>

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