Announcing the Basecamp 3 API

Basecamp 3 finally has an API! Head to https://github.com/basecamp/bc3-api for documentation and a guide to getting started.

We’re already seeing some great 3rd party integrations like Tick’s time tracking service and expect many more to come soon. If you have an integration you’d like us to know about, be sure to submit it here.

Some technical details:

  • The API is all part of the same majestic monolith that powers the web interface. Same controllers, new Jbuilder views.
  • Everything is cached to the max with liberal use of Russian Doll caching and ETags. While layering it on, I found and fixed a few related issues so consider the campsite cleaner than I found it!
  • Pagination is implemented following RFC5988’s convention of `Link` headers to provide URLs for the `next` page.
  • In-app Rate limiting is handled by Jeremy’s excellent Rack::Ratelimit middleware.
  • Traffic is served on a separate domain to help shield from CSRF and session vulnerabilities, and to aid with monitoring, routing, and throttling.

That’s all. Happy APIing!