-
Notifications
You must be signed in to change notification settings - Fork 0
Description
As we look toward a future where we have multiple apps and microservices acting as a single product, I think we need to start nailing down our API conventions. We want developers to have a consistent experience, much like users will navigating through a browser.
I've been drawn to the JSON API standard. It's pretty easy to grasp, close to what we're used to, and takes the guess work out of things like how to do pagination.
What it doesn't address is how to do versioning and authentication/authorization.
On versioning, I'm a fan of specifying it in a header instead of in the URL. But there are many varying opinions. I'm open to debate.
Authentication and authorization is a bit trickier. There's everything from HTTP Basic (which Monk ID uses), to Authorization: Token (which Donate and Checkout use), to an X-AUTH-TOKEN header (which the CMS JSON API uses), to... OAuth. I don't know what the answer is here. My feeling is "root" and even account-specific access/tokens will only work for so long. For example, what if a third-party app wants to display the modules/records that a specific user has access to? I see OAuth in our future.
Finally, I think we'll want to create a central "app manager", so a developer doesn't have to register separately for all of the different components. I know there's a lot involved in that idea, but we can flesh out the details when the time comes.
I'd love to hear your feedback and questions.