Acho que vai depender da tecnologia que você utiliza, mas deixando um exemplo de como normalmente organizo em elixir:

  1. router encaminha request para o controller
  2. no controller, chamo a função que vai fazer a validação de changeset. Aqui é validado os parametros recebidos na request, podendo validar valores (por exemplo, se o email está no formato esperado, se a idade é maior que x)
  3. com sucesso na etapa anterior, o controller chama o domínio, que daí vai poder fazer validações mais específicas de regras de negócio, por exemplo.