Skip to content

Dashboard — Endpoints

Base URL: /api/dashboard

Permissões: Admin, Financial, Broker (dados parciais)


GET /api/dashboard

Retorna os KPIs consolidados da empresa.

Resposta 200:

json
{
  "properties": {
    "total": 48,
    "available": 12,
    "reserved": 3,
    "rented": 28,
    "sold": 5
  },
  "contracts": {
    "active": 31,
    "expiringSoon": 4,
    "terminated": 17,
    "cancelled": 2
  },
  "financial": {
    "monthlyRevenue": 87400.00,
    "pendingPayments": 5,
    "pendingValue": 14000.00,
    "defaultedPayments": 2,
    "defaultedValue": 5600.00,
    "defaultRate": 0.064
  },
  "brokers": [
    {
      "id": "b1c2d3e4-...",
      "name": "Paulo Corretor",
      "totalSales": 12,
      "totalLeases": 28,
      "conversionRate": 0.74
    },
    {
      "id": "b2c3d4e5-...",
      "name": "Fernanda Vendas",
      "totalSales": 8,
      "totalLeases": 15,
      "conversionRate": 0.62
    }
  ],
  "proposals": {
    "underReview": 5,
    "negotiating": 3,
    "approved": 2,
    "rejected": 8
  },
  "visits": {
    "scheduled": 7,
    "confirmed": 4,
    "done": 38,
    "cancelled": 6
  },
  "revenueByMonth": [
    { "period": "2026-01", "value": 72000.00 },
    { "period": "2026-02", "value": 75000.00 },
    { "period": "2026-03", "value": 78500.00 },
    { "period": "2026-04", "value": 82000.00 },
    { "period": "2026-05", "value": 87400.00 }
  ],
  "generatedAt": "2026-05-19T10:00:00Z"
}

Descrição dos campos

CampoDescrição
properties.totalTotal de imóveis cadastrados (excluindo deletados)
properties.availableImóveis com status Available
contracts.expiringSoonContratos ativos que vencem nos próximos 30 dias
financial.monthlyRevenueSoma dos pagamentos com status Paid no mês atual
financial.defaultRatedefaultedValue / (monthlyRevenue + defaultedValue)
brokersLista de corretores com métricas de desempenho
revenueByMonthReceita realizada nos últimos 5 meses
generatedAtTimestamp de geração dos dados

Uso no Angular (Dashboard Component)

typescript
// dashboard.component.ts
export class DashboardComponent {
  private destroyRef = inject(DestroyRef);
  stats = signal<DashboardStats | null>(null);

  ngOnInit() {
    this.dashboardService.getStats()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe(data => this.stats.set(data));
  }
}
html
<!-- KPI cards -->
<div class="grid grid-cols-4 gap-4">
  <app-kpi-card
    title="Imóveis Ativos"
    [value]="stats()?.properties.available"
    icon="home"
  />
  <app-kpi-card
    title="Receita Mensal"
    [value]="stats()?.financial.monthlyRevenue | brlCurrency"
    icon="dollar-sign"
  />
</div>

<!-- Gráfico de receita com ng2-charts -->
<canvas baseChart
  [data]="revenueChartData()"
  type="line"
></canvas>

Documentação do FastGivr SystemImob