///|
/// The request body both routes read. `derive(FromJson)` builds it once the
/// descriptor has accepted the payload; the schema and the struct agree that
/// `name` is required, so a body the schema accepts always reads.
#derive(FromJson)
struct GreetReq {
  name : String
}

///|
fn GreetReq::schema() -> @moonapi.Schema {
  @moonapi.Schema::object("GreetReq", [@moonapi.Field::new("name", SStr)])
}