Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
API Design at Eventbrite
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Andrew Godwin
April 10, 2014
Programming
2.6k
2
Share
API Design at Eventbrite
A short talk given as part of the Eventbrite "Advanced Django" workshop at Pycon 2014
Andrew Godwin
April 10, 2014
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
380
Django Through The Years
andrewgodwin
0
300
Writing Maintainable Software At Scale
andrewgodwin
0
510
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
410
Async, Python, and the Future
andrewgodwin
2
730
How To Break Django: With Async
andrewgodwin
1
800
Taking Django's ORM Async
andrewgodwin
0
800
The Long Road To Asynchrony
andrewgodwin
0
750
The Scientist & The Engineer
andrewgodwin
1
830
Other Decks in Programming
See All in Programming
🦞OpenClaw works with AWS
licux
1
310
t *testing.T は どこからやってくるの?
otakakot
1
860
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
940
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
460
Don't Prompt Harder, Structure Better
kitasuke
0
800
Making the RBS Parser Faster
soutaro
0
640
Explore CoroutineScope
tomoeng11
0
130
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
280
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
2
210
ハーネスエンジニアリングとは?
kinopeee
13
6.5k
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
230
Agentic Elixir
whatyouhide
0
430
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
エンジニアに許された特別な時間の終わり
watany
106
240k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Designing for Timeless Needs
cassininazir
0
210
The Language of Interfaces
destraynor
162
26k
The Pragmatic Product Professional
lauravandoore
37
7.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
120
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Balancing Empowerment & Direction
lara
6
1.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
250
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
API Design at Andrew Godwin @andrewgodwin
The Problem
Two existing APIs: APIv1 at least 6 years old APIv2
never finished and now too specialised
Outdated: No provision for new features Some interfaces locked down
to old ideas (e.g. payment)
Bad patterns: Same domain as main site /xml/?method=access_code_new Both XML
and JSON as return formats, transformed from each other.
The Task Build a new API for the modern era
SOA Match it as closely as possible
Event service Venue service Order service Payment service SOA Client
Event service Venue service Order service Payment service SOA Client
APIv3 API Client
Future-proof Allow for more features easily
Maintainable Make sure it's easier to extend than start again
The Basis
The Basis Django REST Framework
The Basis Django REST Framework Custom SOA/API coupling
The Basis Django REST Framework Custom SOA/API coupling Piecemeal refactors
of current code
The Basis Django REST Framework Custom SOA/API coupling Piecemeal refactors
of current code APIv1 as initial target to start deprecation
Design Principles
JSON only Mapping XML ←→ JSON rarely works well
REST (ish) Sensible paths, sensible verbs
/events/ /events/39992/ /events/39992/orders/ /events/39992/publish/ /users/me/owned_events/ POST: New event GET: Event
details POST: Update event GET: List of orders /events/39992/orders/12392/ GET: Order details POST: Publish event GET: List of your events DELETE: Delete event
Every response is {} Leaves room for new features/pagination
Pagination everywhere And standardised, so there's no surprises
Introspectable parameters For our documentation and API explorer
None
None
Always more to do Documentation, consistency, and new features
Try it today! http://developer.eventbrite.com
Thanks. @andrewgodwin
[email protected]