This managed to get the job done:
post {
path("") {
entity(as[String]) { body =>
val user = parse[User](body)
complete(generate(user))
}
}
}
Looks like since I wasn't returning a string in the complete
it started looking for a Marshaller to Marshall my User object.