Alexander Graebe

Preview:

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 agraebe@uber.com

Q & A

Recommended