Stripe adds metadata to API
stripe.com
stripe.com
What I really want is multiple plan subscriptions per customer e.g. one $15/month server and 2 $7 per month servers. Obviously I can just do that as metered but it seems like a lot more code and testing and something I could easily screw up. So having multiple plans subscribed per customer would be nice.
And also, because a lot of the power of APIs comes from the unexpected ways in which people use them I think API providers should encourage unexpected use-cases.
We've just finished doing a similar thing to Stripe, having built an "attributes" key:value store against pretty much anything in our API: http://microcosm-cc.github.io/#attributes
One of the goals we have from that, even without knowing the use-cases behind it, is to have the attributes be first class entities.
Such that you can find things by their attributes, or set up permissions with things like "people with this attribute can do that".
APIs can be really constricting or they can be liberating. Obviously the provider of an API needs to support whatever the API does, and usually this means that the API goals must match the goals of the provider. But in things like metadata/attributes/extended data... there is a real potential to offer a powerful capability that can be supported by the provider and yet allows the API developer to define the use-case themselves.
This is awesome for us, because although the "customer details API" step was optional, it's was the most complicated part of our on-boarding process for new customers, and really addressing people by first name (at the very least) in an email is a bit important. Now we really do have a "zero-code" on-boarding process.
Kudos to Stripe!