Shale/specify idempotent keys

R? @jimdanz 
cc @kyleconroy