Download - Alexander Graebe
![Page 1: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/1.jpg)
Building Moving Experiences
Alexander Graebe
Developer Relations Lead
![Page 2: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/2.jpg)
MORE THAN 2 BILLION TRIPS
72+COUNTRIES
470+CITIES
1.5M+DRIVER PARTNERS
WORLDWIDE
![Page 3: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/3.jpg)
THE UBER PLATFORM VISION
BUILD MOVING EXPERIENCES
![Page 4: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/4.jpg)
In 2014 we first released the Uber API
![Page 5: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/5.jpg)
Today, leading global brands elevate their experience with Uber
![Page 6: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/6.jpg)
OUR APIS …
![Page 7: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/7.jpg)
![Page 8: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/8.jpg)
PICKUP DESTINATION
![Page 9: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/9.jpg)
PICKUP DESTINATION
![Page 10: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/10.jpg)
PICKUP DESTINATION
![Page 11: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/11.jpg)
PICKUP DESTINATION
![Page 12: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/12.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
![Page 13: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/13.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
![Page 14: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/14.jpg)
PICKUPINTENT TO RIDE
/products /estimates/price /estimates/time
Ride Options
![Page 15: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/15.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
![Page 16: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/16.jpg)
PICKUPINTENT TO RIDE
Ride Request Button
Ride Request Widget
Deep Links /request
Ride Request
![Page 17: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/17.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
![Page 18: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/18.jpg)
PICKUP DESTINATIONINTENT TO RIDE
Webhooks /current
all_trips scope
POST RIDE
![Page 19: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/19.jpg)
PICKUP DESTINATIONINTENT TO RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
POST RIDE
![Page 20: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/20.jpg)
/history {id}/receipt
/me
Identity History
POST RIDEDESTINATION
![Page 21: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/21.jpg)
/partners/trips/partners/me /partner/payments /partner/tax-summary
PaymentsIdentity History
POST RIDEDESTINATION
![Page 22: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/22.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
/deliveries/[id]
Delivery Details
/deliveries/deliveries/quote
Delivery Options Delivery Request
![Page 23: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/23.jpg)
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
![Page 24: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/24.jpg)
2GIS
Deep Links
![Page 25: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/25.jpg)
2GIS
/products
![Page 26: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/26.jpg)
2GIS
/estimates/price
![Page 27: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/27.jpg)
2GIS
/estimates/time
![Page 28: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/28.jpg)
![Page 29: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/29.jpg)
PICKUP DESTINATIONINTENT TO RIDE
Webhooks /current
all_trips scope
POST RIDE
![Page 30: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/30.jpg)
POINT A POINT B
2,000,000,000 TRIPS
THE TRIP
![Page 31: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/31.jpg)
POINT A POINT B
20 MINUTES PER TRIP~THE TRIP
![Page 32: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/32.jpg)
POINT A POINT B
40,000,000,000 MINUTES OF FREE TIME
~
THE TRIP
![Page 33: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/33.jpg)
The ultimate in-car entertainment system is the device in your hand.
![Page 34: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/34.jpg)
POINT A POINT B
CONTEXT MATTERS
The Trip Experiences API can tell you…
When the rider has free time
How much free time they have
Where they’re coming from
Where they’re going
![Page 35: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/35.jpg)
IMAGINE …
![Page 36: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/36.jpg)
INSIGHTS FOR, AND OFFERS AROUND, YOUR DESTINATION
LOCAL GUIDES
36
![Page 37: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/37.jpg)
![Page 38: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/38.jpg)
10 MINUTES OF MUSIC OR VIDEO FOR A 10 MINUTE TRIP
NEWS & ENTERTAINMENT
38
![Page 39: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/39.jpg)
Get up-to-date while you're on the goRADIO
![Page 40: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/40.jpg)
On-TripExperience
Off-TripExperience
![Page 41: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/41.jpg)
TURN ON THE HEAT WHEN YOU’RE APPROACHING HOME
INTERNET OF THINGS
41
![Page 42: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/42.jpg)
/partners/trips/partners/me /partner/payments /partner/tax-summary
PaymentsIdentity History
POST RIDEPOINT B
![Page 43: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/43.jpg)
MAKING YOUR LIFE EASIER …
![Page 44: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/44.jpg)
Auth your users via the native Uber app
No more username & password
One tap and your app can start requesting rides
Single Sign OnAuth via Uber
![Page 45: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/45.jpg)
Just set your ride parameters and let the Uber app handle the ride experience
Existing users will feel right at home
Keep the focus on your app; let us handle the ride
Deep LinksQuick & easy
![Page 46: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/46.jpg)
Highly configurable buttons let you get started easily
Login Button lets you auth users using the method you want (Native, Authorization Code Grant, or Implicit Grant)
Ride Request Button allows you to request a ride using Deep Links, the Ride Request Widget, or custom API logic
Uber ButtonsRide Request Button & Login Button
![Page 47: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/47.jpg)
Provide the full Uber experience without ever leaving your app
An entirely embedded experience, from request to drop off
Ride Request WidgetExperience Uber without the app
![Page 48: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/48.jpg)
BACKEND HIGHLIGHTS
![Page 49: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/49.jpg)
Schemaless uses an append-only sparse three dimensional persistent hash map. A datastore developed by Uber with 5 goals in mind:
1) Linear scale - more storage and decreased response times
2) Writability - no middleware for fallback or retry
3) Notifications - triggers for downstream dependencies
4) Secondary Indexes - just like in Postgres to search for trips
5) Operational Trust - expert knowledge for mission-critical data
DATA STORAGE WITH SCHEMA LESS
![Page 50: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/50.jpg)
Trip details are stored as JSON blobs with versioning
DATA STORAGE WITH SCHEMA LESS
![Page 51: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/51.jpg)
MICRO-SERVICES
Moving from a monolith solution to SOA created challenges related to
obviousness, safety, and reliance. Our SOA architecture had to enable us for …
1) Discoverability - finding the right service out of 300+ should be trivial
2) Client Libraries - building SDKs for encapsulated services should be easy
3) Language - we need to have an architecture that is language-agnostic
4) Customizable - timeouts and retry policies are required and should be tunable
5) Efficiency - testing and development of new services with less overhead
![Page 52: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/52.jpg)
THRIFT AS IDL-BASED ENCODING PROTOCOL
Thrift forces service owners to publish strict interface definitions. Encoding/Decoding
is efficient, compression is good, and it unifies JSON blobs for Schemaless.
![Page 53: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/53.jpg)
DAILY DEPLOYMENT WITH UDEPLOY
Consistent builds for services, zero downtime upgrades, automated error detection
![Page 54: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/54.jpg)
USING UBER CONTEXT
![Page 55: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/55.jpg)
![Page 56: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/56.jpg)
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
![Page 57: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/57.jpg)
Create an app in the Uber Developer Dashboard
Scroll down, find the “Webhook URL” field and enter a URL that will receive webhooks from the API
Before we start:
![Page 58: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/58.jpg)
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
![Page 59: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/59.jpg)
Let them securely sign in with their Uber account username and password
• OAuth 2.0 • Single Sign On
Connect your user
![Page 60: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/60.jpg)
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
![Page 61: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/61.jpg)
You’ll receive a webhook when their ride status changes.
Use the `user_id` to figure out which one of your users is on a ride.
Detect when a user is on a ride
![Page 62: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/62.jpg)
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
![Page 63: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/63.jpg)
Get information about your user’s ride!
• Pickup/destination location • Going home or work • Uber Product Type • ETA / Duration • and more!
Get the Uber Context
![Page 64: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/64.jpg)
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
![Page 65: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/65.jpg)
On-TripExperience
Off-TripExperience
![Page 66: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/66.jpg)
![Page 67: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/67.jpg)
The challenge is not technology…
It’s imagination.
![Page 69: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/69.jpg)
@uberdevelopers medium.com/uber-developers
Thank You!
Alexander Graebe Developer Relations Lead [email protected]
![Page 70: Alexander Graebe](https://reader030.vdocument.in/reader030/viewer/2022021507/58ed4c5b1a28ab95548b4687/html5/thumbnails/70.jpg)
Q & A