TDD — API Igrejas públicas
Status
Implementado
Contexto
Lista de igrejas disponíveis para signup e seleção no perfil. Usado por RegisterPage e ProfileDialog (tab Dados). Consumido por múltiplas features — documentado em api/ (híbrido).
Interface de Usuário (UI)
O endpoint é consumido por dropdowns de igreja em:
- RegisterPage — signup email e signup Google; campo Igreja obrigatório
- ProfileDialog — aba Dados Pessoais; dropdown para alterar igreja
- HomePage — diálogo de auto-registro (perfil não encontrado)
Componente visual: Dropdown/Select com lista churches (unitId, label); ordenado por label (pt-BR); loading enquanto carrega.
Observação: O domínio (origin/referer) determina o tenant; 404 quando tenant não encontrado.
Contratos
GET publicChurchesHttp
- Method: GET
- Domain: extraído de headers
origin,refereroux-forwarded-host - Response 200:
{ ok: true, data: { domain, ministryId, ministryName, churches: [{ unitId, label }] }, error: null, debug } - Response 404:
{ ok: false, error: { code: "TENANT_NOT_FOUND", message } } - churches: ordenado por label (pt-BR)
Fluxo
- Frontend: GetSignupChurchOptions.execute(domain)
- Backend: FirestoreOrganizationalUnitRepository.listChurchOptionsByDomain
- Retorna lista de igrejas do tenant
Código de referência
frontend/lib/application/use_cases/get_signup_church_options.dartbackend/functions/src/interfaces/http/public-churches-http-controller.tsbackend/functions/src/infrastructure/repositories/firestore-organizational-unit-repository.ts