Skip to content

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âmetroTipoDescrição
pageintegerNúmero da página (padrão: 1)
pageSizeintegerItens por página (padrão: 20)
searchstringBusca por código, endereço
statusstringFiltro: Available, Reserved, Rented, Sold
typestringFiltro: Apartment, House, CommercialRoom, Land, Warehouse
purposestringFiltro: 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
}
CampoTipoObrigatório
codestringSim
typestringSim
purposestringSim
addressobjectSim
ownerIdguidSim
rentPricedecimalCondicional (se purpose incluir locação)
salePricedecimalCondicional (se purpose incluir venda)

Resposta 201: Objeto completo do imóvel criado.

Erros:

  • 400 — Dados inválidos
  • 409 — 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 ativos
  • 404 — Não encontrado

Documentação do FastGivr SystemImob