I believe the resources should define getters and setters for all the attributes which do the appropriate wrapper calls rather than expecting the user of the api to tediously call wrapper as in the following
payload.name = client.wrapper.string(name)
which should just be imho
payload.name = name
Similarly, resource and operation should take hashes as args and set the corresponding attributes
payload = client.resource(:CampaignBudget, {name: name, amount_micros: amount, delivery_method: 'ACCELERATED', explicitly_shared: true})
You'll note that I expect the setter for 'delivery_method' to know how to find its enum and lookup the value.