Skip to main content

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, referer ou x-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

  1. Frontend: GetSignupChurchOptions.execute(domain)
  2. Backend: FirestoreOrganizationalUnitRepository.listChurchOptionsByDomain
  3. Retorna lista de igrejas do tenant

Código de referência

  • frontend/lib/application/use_cases/get_signup_church_options.dart
  • backend/functions/src/interfaces/http/public-churches-http-controller.ts
  • backend/functions/src/infrastructure/repositories/firestore-organizational-unit-repository.ts