Tema
Visitas — Endpoints
Base URL: /api/visits
Permissões: Admin, Broker
GET /api/visits
Lista visitas da empresa.
Query params:
| Parâmetro | Tipo | Descrição |
|---|---|---|
page | integer | Página (padrão: 1) |
pageSize | integer | Itens por página |
search | string | Busca por imóvel ou cliente |
status | string | Scheduled, Confirmed, Done, Cancelled |
brokerId | guid | Filtrar por corretor |
propertyId | guid | Filtrar por imóvel |
dateFrom | date | Data inicial |
dateTo | date | Data final |
Resposta 200:
json
{
"data": [
{
"id": "i1j2k3l4-...",
"scheduledAt": "2026-05-25T10:00:00Z",
"status": "Scheduled",
"checkinDone": false,
"property": {
"id": "3fa85f64-...",
"code": "AP-001",
"address": "Rua das Flores, 123 - Centro"
},
"client": {
"id": "a1b2c3d4-...",
"name": "João da Silva",
"phone": "(11) 99999-0001"
},
"broker": {
"id": "b1c2d3e4-...",
"name": "Paulo Corretor"
},
"createdAt": "2026-05-20T09:00:00Z"
}
],
"page": 1,
"pageSize": 20,
"total": 9,
"totalPages": 1,
"hasNext": false,
"hasPrevious": false
}GET /api/visits/:id
Retorna detalhes de uma visita.
Resposta 200:
json
{
"id": "i1j2k3l4-...",
"scheduledAt": "2026-05-25T10:00:00Z",
"status": "Done",
"checkinDone": true,
"checkinAt": "2026-05-25T10:05:00Z",
"notes": "Cliente gostou muito, pediu tempo para pensar.",
"property": { ... },
"client": { ... },
"broker": { ... },
"createdAt": "2026-05-20T09:00:00Z",
"updatedAt": "2026-05-25T11:00:00Z"
}POST /api/visits
Agenda uma visita.
Body:
json
{
"propertyId": "3fa85f64-...",
"clientId": "a1b2c3d4-...",
"brokerId": "b1c2d3e4-...",
"scheduledAt": "2026-05-25T10:00:00Z",
"notes": "Cliente prefere manhãs."
}| Campo | Tipo | Obrigatório |
|---|---|---|
propertyId | guid | Sim |
clientId | guid | Sim |
brokerId | guid | Sim |
scheduledAt | datetime | Sim |
Resposta 201: Visita criada com status Scheduled.
PUT /api/visits/:id
Atualiza dados da visita (data, notas).
PATCH /api/visits/:id/status
Avança o status da visita.
Body:
json
{
"status": "Confirmed",
"checkinDone": false
}Transições válidas:
Scheduled → Confirmed
Scheduled → Cancelled
Confirmed → Done (com checkinDone: true)
Confirmed → CancelledResposta 200: Visita atualizada.
DELETE /api/visits/:id
Remove visita (soft delete).
Permissões: Admin
Resposta 204: Sem conteúdo.