Files
openapi-types/tests/2.0/uber.ts

373 lines
9.4 KiB
TypeScript

import type { Specification } from "../../2.0";
export const uber: Specification = {
swagger: "2.0",
info: {
title: "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"],
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",
format: "double",
},
{
name: "longitude",
in: "query",
description: "Longitude component of location.",
required: true,
type: "number",
format: "double",
},
],
tags: ["Products"],
responses: {
200: {
description: "An array of products",
schema: {
type: "array",
items: {
$ref: "#/definitions/Product",
},
},
},
default: {
description: "Unexpected error",
schema: {
$ref: "#/definitions/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: [
{
name: "start_latitude",
in: "query",
description: "Latitude component of start location.",
required: true,
type: "number",
format: "double",
},
{
name: "start_longitude",
in: "query",
description: "Longitude component of start location.",
required: true,
type: "number",
format: "double",
},
{
name: "end_latitude",
in: "query",
description: "Latitude component of end location.",
required: true,
type: "number",
format: "double",
},
{
name: "end_longitude",
in: "query",
description: "Longitude component of end location.",
required: true,
type: "number",
format: "double",
},
],
tags: ["Estimates"],
responses: {
200: {
description: "An array of price estimates by product",
schema: {
type: "array",
items: {
$ref: "#/definitions/PriceEstimate",
},
},
},
default: {
description: "Unexpected error",
schema: {
$ref: "#/definitions/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: [
{
name: "start_latitude",
in: "query",
description: "Latitude component of start location.",
required: true,
type: "number",
format: "double",
},
{
name: "start_longitude",
in: "query",
description: "Longitude component of start location.",
required: true,
type: "number",
format: "double",
},
{
name: "customer_uuid",
in: "query",
type: "string",
format: "uuid",
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: {
type: "array",
items: {
$ref: "#/definitions/Product",
},
},
},
default: {
description: "Unexpected error",
schema: {
$ref: "#/definitions/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: "#/definitions/Profile",
},
},
default: {
description: "Unexpected error",
schema: {
$ref: "#/definitions/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.",
parameters: [
{
name: "offset",
in: "query",
type: "integer",
format: "int32",
description:
"Offset the list of returned results by this amount. Default is zero.",
},
{
name: "limit",
in: "query",
type: "integer",
format: "int32",
description:
"Number of items to retrieve. Default is 5, maximum is 100.",
},
],
tags: ["User"],
responses: {
200: {
description: "History information for the given user",
schema: {
$ref: "#/definitions/Activities",
},
},
default: {
description: "Unexpected error",
schema: {
$ref: "#/definitions/Error",
},
},
},
},
},
},
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.",
},
},
},
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.",
},
},
},
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",
format: "int32",
description: "Position in pagination.",
},
limit: {
type: "integer",
format: "int32",
description: "Number of items to retrieve (100 max).",
},
count: {
type: "integer",
format: "int32",
description: "Total number of items available.",
},
history: {
type: "array",
items: {
$ref: "#/definitions/Activity",
},
},
},
},
Error: {
properties: {
code: {
type: "integer",
format: "int32",
},
message: {
type: "string",
},
fields: {
type: "string",
},
},
},
},
};