Skip to content

Instantly share code, notes, and snippets.

@earth2marsh
Last active April 5, 2021 13:39
Show Gist options
  • Save earth2marsh/264123aefc2e29551d9d to your computer and use it in GitHub Desktop.
Save earth2marsh/264123aefc2e29551d9d to your computer and use it in GitHub Desktop.
A Swagger YAML specification for Uber's new API
swagger: 2
info:
title: The new Uber API
description: Move your app forward with the Uber API
version: "1.0.0"
host: api.uber.com
schemes:
- https
basePath: /v1
produces:
- application/json
# security:
# - oauth2:
# $ref: security/github/accessCode
# - apitoken:
# type: "header"
# name: "api_key"
paths:
/products:
get:
summary: Product Types
description: The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.
parameters:
- name: latitude
in: query
description: Latitude component of location.
required: true
type: number
- name: longitude
in: query
description: Longitude component of location.
required: true
type: number
tags:
- Products
responses:
"200":
description: An array of products
schema:
$ref: Products
default:
description: Unexpected error
schema:
$ref: Error
/estimates/price:
get:
summary: Price Estimates
description: The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.<br><br>The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier.
parameters:
- $ref: "start_latitude"
- $ref: "start_longitude"
- name: end_latitude
in: query
description: Latitude component of end location.
required: true
type: number
- name: end_longitude
in: query
description: Longitude component of end location.
required: true
type: number
tags:
- Estimates
responses:
"200":
description: An array of price estimates by product
schema:
$ref: PriceEstimates
default:
description: Unexpected error
schema:
$ref: Error
/estimates/time:
get:
summary: Time Estimates
description: The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs.
parameters:
- $ref: "start_latitude"
- $ref: "start_longitude"
- name: customer_uuid
in: query
type: string
description: Unique customer identifier to be used for experience customization.
- name: product_id
in: query
type: string
description: Unique identifier representing a specific product for a given latitude & longitude.
tags:
- Estimates
responses:
"200":
description: An array of products
schema:
$ref: Products
default:
description: Unexpected error
schema:
$ref: Error
/me:
get:
summary: User Profile
description: The User Profile endpoint returns information about the Uber user that has authorized with the application.
tags:
- User
responses:
"200":
description: Profile information for a user
schema:
$ref: Profile
default:
description: Unexpected error
schema:
$ref: Error
/history:
get:
summary: User Activity
description: The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.<br><br>The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary.
tags:
- User
responses:
"200":
description: History information for the given user
schema:
$ref: Activities
default:
description: Unexpected error
schema:
$ref: Error
parameters:
- $ref: "start_latitude"
- $ref: "start_longitude"
parameters:
start_latitude:
in: query
type: number
required: true
description: Latitude component of start location.
start_longitude:
in: query
required: true
type: number
description: Longitude component of start location.
definitions:
Product:
properties:
product_id:
type: string
description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles.
description:
type: string
description: Description of product.
display_name:
type: string
description: Display name of product.
capacity:
type: string
description: Capacity of product. For example, 4 people.
image:
type: string
description: Image URL representing the product.
Products:
type: array
items:
$ref: Product
PriceEstimate:
properties:
product_id:
type: string
description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles
currency_code:
type: string
description: "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code."
display_name:
type: string
description: Display name of product.
estimate:
type: string
description: Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or "Metered" for TAXI.
low_estimate:
type: number
description: Lower bound of the estimated price.
high_estimate:
type: number
description: Upper bound of the estimated price.
surge_multiplier:
type: number
description: Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier.
PriceEstimates:
type: array
items:
$ref: PriceEstimate
Profile:
properties:
first_name:
type: string
description: First name of the Uber user.
last_name:
type: string
description: Last name of the Uber user.
email:
type: string
description: Email address of the Uber user
picture:
type: string
description: Image URL of the Uber user.
promo_code:
type: string
description: Promo code of the Uber user.
Activity:
properties:
uuid:
type: string
description: Unique identifier for the activity
Activities:
properties:
offset:
type: integer
description: Position in pagination.
limit:
type: integer
description: Number of items to retrieve (100 max).
count:
type: integer
description: Total number of items available.
history:
type: array
$ref: Activity
Error:
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment