WIP: generate a canonical request