Tema
Imóveis — Endpoints
Base URL: /api/properties
Permissões: Admin, Broker, Financial (leitura e alteração de status)
GET /api/properties
Lista todos os imóveis da empresa com paginação.
Query params:
| Parâmetro | Tipo | Descrição |
|---|---|---|
page | integer | Número da página (padrão: 1) |
pageSize | integer | Itens por página (padrão: 20) |
search | string | Busca por código, endereço |
status | string | Filtro: Available, Reserved, Rented, Sold |
type | string | Filtro: Apartment, House, CommercialRoom, Land, Warehouse |
purpose | string | Filtro: Lease, Sale, Both |
Resposta 200:
json
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "AP-001",
"type": "Apartment",
"purpose": "Lease",
"status": "Available",
"address": {
"street": "Rua das Flores",
"number": "123",
"complement": "Apto 45",
"neighborhood": "Centro",
"city": "São Paulo",
"state": "SP",
"zipCode": "01310-100"
},
"bedrooms": 2,
"bathrooms": 1,
"parkingSpots": 1,
"privateArea": 65.5,
"totalArea": 72.0,
"rentPrice": 2500.00,
"salePrice": null,
"condoFee": 450.00,
"annualIptu": 1200.00,
"brokerId": "abc123...",
"ownerId": "def456...",
"condominiumId": null,
"images": ["https://storage.googleapis.com/..."],
"createdAt": "2026-05-10T08:00:00Z"
}
],
"page": 1,
"pageSize": 20,
"total": 42,
"totalPages": 3,
"hasNext": true,
"hasPrevious": false
}GET /api/properties/:id
Retorna os detalhes de um imóvel específico.
Resposta 200:
json
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "AP-001",
"type": "Apartment",
"purpose": "Lease",
"status": "Available",
"description": "Apartamento reformado, sol da manhã, próximo ao metrô.",
"address": {
"street": "Rua das Flores",
"number": "123",
"complement": "Apto 45",
"neighborhood": "Centro",
"city": "São Paulo",
"state": "SP",
"zipCode": "01310-100"
},
"bedrooms": 2,
"bathrooms": 1,
"parkingSpots": 1,
"privateArea": 65.5,
"totalArea": 72.0,
"rentPrice": 2500.00,
"salePrice": null,
"condoFee": 450.00,
"annualIptu": 1200.00,
"floorPlanUrl": "https://storage.googleapis.com/.../planta.pdf",
"images": [
"https://storage.googleapis.com/.../foto1.jpg"
],
"broker": {
"id": "abc123...",
"name": "Paulo Corretor",
"creci": "CRECI-SP 12345"
},
"owner": {
"id": "def456...",
"name": "Maria Proprietária"
},
"statusHistory": [
{
"status": "Available",
"changedAt": "2026-05-10T08:00:00Z",
"changedBy": "admin@imob.com"
}
],
"createdAt": "2026-05-10T08:00:00Z",
"updatedAt": "2026-05-15T14:30:00Z"
}Erros:
404— Imóvel não encontrado
POST /api/properties
Cadastra um novo imóvel.
Permissões: Admin, Broker
Body:
json
{
"code": "AP-002",
"type": "Apartment",
"purpose": "Lease",
"description": "Apartamento espaçoso no centro.",
"address": {
"street": "Av. Paulista",
"number": "1000",
"complement": "Apto 81",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"zipCode": "01310-100"
},
"bedrooms": 3,
"bathrooms": 2,
"parkingSpots": 2,
"privateArea": 90.0,
"totalArea": 100.0,
"rentPrice": 4500.00,
"salePrice": null,
"condoFee": 800.00,
"annualIptu": 2400.00,
"ownerId": "def456-...",
"brokerId": "abc123-...",
"condominiumId": null
}| Campo | Tipo | Obrigatório |
|---|---|---|
code | string | Sim |
type | string | Sim |
purpose | string | Sim |
address | object | Sim |
ownerId | guid | Sim |
rentPrice | decimal | Condicional (se purpose incluir locação) |
salePrice | decimal | Condicional (se purpose incluir venda) |
Resposta 201: Objeto completo do imóvel criado.
Erros:
400— Dados inválidos409— Código já cadastrado nesta empresa
PUT /api/properties/:id
Atualiza os dados de um imóvel.
Permissões: Admin, Broker
Body: Mesma estrutura do POST (todos os campos).
Resposta 200: Objeto atualizado.
PATCH /api/properties/:id/status
Altera o status de um imóvel.
Permissões: Admin, Broker, Financial
Body:
json
{
"status": "Reserved",
"reason": "Proposta em análise"
}Resposta 200:
json
{
"id": "3fa85f64-...",
"status": "Reserved",
"updatedAt": "2026-05-19T10:00:00Z"
}Erros:
422— Transição de status inválida
DELETE /api/properties/:id
Remove um imóvel (soft delete).
Permissões: Admin
Resposta 204: Sem conteúdo.
Erros:
400— Imóvel possui contratos ativos404— Não encontrado