post_job: take job object instead of low-level JSON str

I think our methods should operate on high-level objects when they can.