Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lessons from helping developers integrate 1,000 APIs with Zapier

Lessons from helping developers integrate 1,000 APIs with Zapier

Fokke Zandbergen

February 21, 2018
Tweet

More Decks by Fokke Zandbergen

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  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

    View Slide

  4. CHAIN APIS WITH NO CODE

    View Slide

  5. View Slide

  6. INTEGRATE WITH ZAPIER TO INTEGRATE WITH 1,000
    > Define Triggers (GET or Webhooks)
    > Define Actions (POST)
    > Watch users build Zaps across Apps
    > Profit

    View Slide

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

    View Slide

  8. DON'T REINVENT THE WHEEL
    > REST JSON
    > OAuth 2.0 w/refresh
    > REST Hooks
    > OpenAPI ❋
    Zapier is heavily optimized for these
    standards.

    View Slide

  9. DON'T SAVE ON DOCS
    > Exists
    > Complete
    > Versioned
    > Public: Developer Marketing Material
    > Standard: OpenAPI (Swagger)
    Zapier will support scaffolding integrations with OpenAPI.

    View Slide

  10. SECRET TOKENS ARE SACRED
    > Never expire...
    > unless we have a Refresh Token...
    > (which should never expire)
    > ...until the user revokes.

    View Slide

  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.

    View Slide

  12. ORDER!
    > Field: created_at
    > Direction: DESC
    > Ideally multiple combinations
    Worst Case? Sorted from old to new,
    with pagination but no meta data.

    View Slide

  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.

    View Slide

  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."
    }

    View Slide

  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!

    View Slide

  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

    Login
    ...

    View Slide

  17. MORE?
    > Tech Blog: zapier.com/engineering
    > Platform: zapier.com/developer

    View Slide

  18. Q&API

    View Slide