Lessons from helping developers integrate 1,000 APIs with Zapier

Lessons from helping developers integrate 1,000 APIs with Zapier

C056051a062fb1054cb45d98177384aa?s=128

Fokke Zandbergen

February 21, 2018
Tweet

Transcript

  1. LESSONS FROM HELPING DEVELOPERS INTEGRATE 1,000 APIS WITH ZAPIER

  2. FOKKEZB.NL/ABOUT ZAPIER SUPPORT ENGINEER Resolve Technical Questions Once And For

    All
  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
  4. CHAIN APIS WITH NO CODE

  5. None
  6. INTEGRATE WITH ZAPIER TO INTEGRATE WITH 1,000 > Define Triggers

    (GET or Webhooks) > Define Actions (POST) > Watch users build Zaps across Apps > Profit
  7. LESSONS FROM HELPING DEVELOPERS INTEGRATE 1,000 APIS WITH ZAPIER

  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> ...
  17. MORE? > Tech Blog: zapier.com/engineering > Platform: zapier.com/developer

  18. Q&API