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 full-size slide

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

    View full-size 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 full-size slide

  4. CHAIN APIS WITH NO CODE

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. 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 full-size slide

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

    View full-size slide

  12. 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 full-size slide

  13. 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 full-size slide

  14. ...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 full-size slide

  15. ...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 full-size slide

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

    View full-size slide