Upload
codefest
View
52
Download
0
Embed Size (px)
Citation preview
Building Moving Experiences
Alexander Graebe
Developer Relations Lead
MORE THAN 2 BILLION TRIPS
72+COUNTRIES
470+CITIES
1.5M+DRIVER PARTNERS
WORLDWIDE
THE UBER PLATFORM VISION
BUILD MOVING EXPERIENCES
In 2014 we first released the Uber API
Today, leading global brands elevate their experience with Uber
OUR APIS …
PICKUP DESTINATION
PICKUP DESTINATION
PICKUP DESTINATION
PICKUP DESTINATION
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
PICKUPINTENT TO RIDE
/products /estimates/price /estimates/time
Ride Options
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
PICKUPINTENT TO RIDE
Ride Request Button
Ride Request Widget
Deep Links /request
Ride Request
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
PICKUP DESTINATIONINTENT TO RIDE
Webhooks /current
all_trips scope
POST RIDE
PICKUP DESTINATIONINTENT TO RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
POST RIDE
/history {id}/receipt
/me
Identity History
POST RIDEDESTINATION
/partners/trips/partners/me /partner/payments /partner/tax-summary
PaymentsIdentity History
POST RIDEDESTINATION
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
/deliveries/[id]
Delivery Details
/deliveries/deliveries/quote
Delivery Options Delivery Request
PICKUP DESTINATIONINTENT TO RIDE POST RIDE
Help users make a decision
Execute user intents
Enhance user experience
Analyze and gain insights
2GIS
Deep Links
2GIS
/products
2GIS
/estimates/price
2GIS
/estimates/time
PICKUP DESTINATIONINTENT TO RIDE
Webhooks /current
all_trips scope
POST RIDE
POINT A POINT B
2,000,000,000 TRIPS
THE TRIP
POINT A POINT B
20 MINUTES PER TRIP~THE TRIP
POINT A POINT B
40,000,000,000 MINUTES OF FREE TIME
~
THE TRIP
The ultimate in-car entertainment system is the device in your hand.
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
IMAGINE …
INSIGHTS FOR, AND OFFERS AROUND, YOUR DESTINATION
LOCAL GUIDES
36
10 MINUTES OF MUSIC OR VIDEO FOR A 10 MINUTE TRIP
NEWS & ENTERTAINMENT
38
Get up-to-date while you're on the goRADIO
On-TripExperience
Off-TripExperience
TURN ON THE HEAT WHEN YOU’RE APPROACHING HOME
INTERNET OF THINGS
41
/partners/trips/partners/me /partner/payments /partner/tax-summary
PaymentsIdentity History
POST RIDEPOINT B
MAKING YOUR LIFE EASIER …
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
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
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
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
BACKEND HIGHLIGHTS
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
Trip details are stored as JSON blobs with versioning
DATA STORAGE WITH SCHEMA LESS
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
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.
DAILY DEPLOYMENT WITH UDEPLOY
Consistent builds for services, zero downtime upgrades, automated error detection
USING UBER CONTEXT
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
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:
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
Let them securely sign in with their Uber account username and password
• OAuth 2.0 • Single Sign On
Connect your user
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
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
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
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
Connect your user
Detect when a user is on a ride
Get the Uber Context
Use the context to enhance your app!
On-TripExperience
Off-TripExperience
The challenge is not technology…
It’s imagination.
developer.uber.com
@uberdevelopers medium.com/uber-developers
Thank You!
Alexander Graebe Developer Relations Lead [email protected]
Q & A