move idempotent warnings to middleware
simplify params validations