Acho que vai depender da tecnologia que você utiliza, mas deixando um exemplo de como normalmente organizo em elixir:
- router encaminha request para o controller
- 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)
- 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.