Pular para conteúdo

API Backend — Chronos

Visao Geral

O backend expoe BFF (/bff/*) para o dashboard, Public (/bff/public/*) para booking e Webhooks (/webhooks/*) para integracoes.

Base URL: http://localhost:5050


BFF — Auth

Metodo Path Descricao
POST /bff/auth/login Login
POST /bff/auth/signup Cadastro
POST /bff/auth/refresh Refresh token
GET /bff/auth/me Dados do usuario + tenants
POST /bff/auth/select-tenant Selecionar tenant

BFF — Appointments

Metodo Path Descricao
GET /bff/appointments Listar agendamentos (filtro por data, profissional)
GET /bff/appointments/{id} Obter agendamento
POST /bff/appointments Criar agendamento (dashboard)
PUT /bff/appointments/{id}/status Atualizar status

Status Transitions

PENDING → CONFIRMED → IN_PROGRESS → COMPLETED
PENDING → CANCELLED
CONFIRMED → CANCELLED
CANCELLED → CONFIRMED (desfazer)

BFF — Services

Metodo Path Descricao
GET /bff/services Listar servicos
GET /bff/services/{id} Obter servico
POST /bff/services Criar servico
PUT /bff/services/{id} Atualizar
DELETE /bff/services/{id} Deletar

BFF — Professionals

Metodo Path Descricao
GET /bff/professionals Listar profissionais
GET /bff/professionals/{id} Obter profissional
POST /bff/professionals Criar
PUT /bff/professionals/{id} Atualizar
DELETE /bff/professionals/{id} Deletar

BFF — Customers

Metodo Path Descricao
GET /bff/customers Listar clientes
GET /bff/customers/{id} Obter cliente
POST /bff/customers Criar
PUT /bff/customers/{id} Atualizar
DELETE /bff/customers/{id} Deletar
GET /bff/customers/search Buscar por nome/email/phone

BFF — Schedules

Metodo Path Descricao
GET /bff/schedules/professional/{id} Agenda do profissional
POST /bff/schedules Criar agenda
PUT /bff/schedules/{id} Atualizar
DELETE /bff/schedules/{id} Deletar
POST /bff/schedules/exceptions Criar excecao
DELETE /bff/schedules/exceptions/{id} Deletar excecao

Modos de Agenda

  • INTERVALS: Horarios com intervalo regular (ex: a cada 30 min)
  • FIXED_SLOTS: Horarios fixos predefinidos

Excecoes

  • BLOCKED — Horario bloqueado
  • VACATION — Ferias
  • allDay — Dia inteiro ou parcial
  • recurring — Recorrente (ex: aniversario)

BFF — Locations

Metodo Path Descricao
GET /bff/locations Listar locais
POST /bff/locations Criar local
PUT /bff/locations/{id} Atualizar
DELETE /bff/locations/{id} Deletar

BFF — Rooms

Metodo Path Descricao
GET /bff/rooms Listar salas
GET /bff/rooms/{id} Obter sala
POST /bff/rooms Criar sala
PUT /bff/rooms/{id} Atualizar
DELETE /bff/rooms/{id} Deletar
POST /bff/rooms/{id}/bookings Reservar sala
POST /bff/rooms/bookings/{id}/cancel Cancelar reserva

BFF — Promotions

Metodo Path Descricao
GET /bff/promotions Listar promocoes
POST /bff/promotions Criar
PUT /bff/promotions/{id} Atualizar
DELETE /bff/promotions/{id} Deletar
POST /bff/promotions/validate Validar codigo

BFF — Dashboard

Metodo Path Descricao
GET /bff/dashboard/summary Stats do dia/semana/mes
GET /bff/dashboard/calendar Calendario com agendamentos
GET /bff/dashboard/upcoming Proximos agendamentos

BFF — Tenant

Metodo Path Descricao
GET /bff/tenant Info do tenant
PUT /bff/tenant Atualizar tenant
GET /bff/tenant/settings Config do tenant
PUT /bff/tenant/settings Atualizar config

Public API (Booking)

Sem autenticacao. Acesso publico para agendamento online.

Metodo Path Descricao
GET /bff/public/c/{slug} Info do tenant
GET /bff/public/c/{slug}/services Servicos disponiveis
GET /bff/public/c/{slug}/professionals Profissionais visiveis
GET /bff/public/c/{slug}/p/{profSlug} Perfil do profissional
GET /bff/public/c/{slug}/availability Slots disponiveis
POST /bff/public/c/{slug}/appointments Criar agendamento
POST /bff/public/c/{slug}/promotions/validate Validar promocao

Availability Query Params

?serviceId={id}&date={YYYY-MM-DD}&professionalId={id?}&locationId={id?}

Create Appointment Body

{
  "customerName": "Joao Silva",
  "customerEmail": "[email protected]",
  "customerPhone": "+55 11 98765-4321",
  "items": [{ "serviceId": "...", "quantity": 1 }],
  "date": "2026-02-20",
  "startTime": "10:00",
  "locationId": "...",
  "professionalId": "...",
  "notes": "Primeira vez",
  "promotionCode": "DESC10"
}

Webhooks

WhatsApp (Herald)

POST /webhooks/whatsapp/incoming (sem auth)
{
  "ownerRef": "chronos-{tenantId}",
  "phoneFrom": "5511987654321",
  "message": "CONFIRMAR",
  "timestamp": "2026-02-20T10:00:00Z"
}

Autenticacao

BFF: Authorization: Bearer {jwt} + X-Tenant-Id: {tenantId}

Public: Sem autenticacao

Webhooks: Sem autenticacao (paths publicos no AuthFilter)