Talk at a Nordic APIs webcast (LiveCast) on API Usability & Developer Experience
https://nordicapis.com/sessions/lessons-helping-developers-integrate-1000-apis-zapier/
3. ZAPIER.COM/ABOUT
> September 2011 Idea
> May 2012 Y Combinator Graduation
> September 2012 Raised $1.3M
> May 2014 Profitable
> June 2016 At 1M Users, $10M ARR
> August 2017 At 100 Zapiens (or Zorps)
> January 2018 At 1K Apps, $35M ARR
8. DON'T REINVENT THE WHEEL
> REST JSON
> OAuth 2.0 w/refresh
> REST Hooks
> OpenAPI ❋
Zapier is heavily optimized for these
standards.
9. DON'T SAVE ON DOCS
> Exists
> Complete
> Versioned
> Public: Developer Marketing Material
> Standard: OpenAPI (Swagger)
Zapier will support scaffolding integrations with OpenAPI.
10. SECRET TOKENS ARE SACRED
> Never expire...
> unless we have a Refresh Token...
> (which should never expire)
> ...until the user revokes.
11. WORK THAT BODY
> Limiting: limit, since
> Pagination: page, since, meta
> Filtering & Searching
> Field Masks: fields
GraphQL is awesome at all this, but at the cost of more
complexity and no builtin support by Zapier.
12. ORDER!
> Field: created_at
> Direction: DESC
> Ideally multiple combinations
Worst Case? Sorted from old to new,
with pagination but no meta data.
13. CONSIDER REST HOOKS
> We won't call you... you call Us
> Better UX than (Static) Webhooks +24%
> Reduces server Load & Traffic 66x
> Triggers Zaps Instantly
Zapier has started to require REST Hooks for Public Apps.
14. HTTP STATUS CODES ARE THERE FOR A REASON
HTTP/1.0 200 OK
Content-Type: application/json
{
"status": "error",
"code": 404,
"message": "Object is not found."
}
15. ...AS ARE HTTP METHODS
GET /book/add?title=APIs+For+Dummies HTTP/1.0
HTTP/1.0 201 Created
Content-Type text/plain
Got it!
16. ...AND CONTENT-TYPE HEADERS
> Send what you say you will
HTTP/1.0 400 Bad Request
Content-Type: application/json
Parameter 'id' is missing.
> Don't mix content types
HTTP/1.0 401 Unauthorized
Content-Type: text/html
<html>
<title>Login</title>
...