Get Started
このガイドでは、Uber Direct アカウントの作成プロセスを順を追って説明します。アカウントを作成すると、開発者の認証情報にアクセスして Uber Direct API を利用できるようになります。
これらのステップにおいて問題が発生した場合は、Uber の担当窓口かアカウントマネージャーにお問い合わせください。
¶ アカウントを作成する
(注:アカウント作成プロセスは、現在一部の地域でのみご利用いただけます。お住まいの地域での提供状況については、Uber の担当窓口かアカウントマネージャーにお問い合わせください)
まず https://direct.uber.com にアクセスします。
-
既存の Uber アカウントを使用してサインインします。アカウントをお持ちでない場合は新たに作成してください。
-
Uber の利用規約に同意して、プライバシー通知を確認してください。
注:[We’re unable to set up your account.(アカウントを設定できません)] というメッセージが表示された場合は、使用しているメールアドレスが既存の Uber Direct の組織に既に関連付けられていることを示しています。
-
Uber アカウントにサインインできたら、Uber Direct のアカウント作成フローが開きます。すべてのフィールドに入力したら、Uber Direct の利用条件と API 利用規約を確認して同意します。
-
同意すると、Uber Direct ダッシュボードが開きます。ここでお支払いの詳細を入力できます。このステップをスキップして後で追加することもできます。詳細については「請求情報を追加する」セクションを参照してください。
-
すべてのステップを完了して有効なクレジットカードを入力すると、配達リクエストを実行できるようになります。
¶ 請求情報を追加する
アカウント作成中にステップ 4 をスキップした場合は、このセクションのステップに従って請求情報を追加できます。
- お支払い情報を追加するには、左側のサイドバーで [請求] をクリックします。
- 完了したら、入力した情報を保存します。
- 請求ページに戻ると、[お支払い方法] セクションに新しいお支払い方法が表示されます。
注:請求情報を入力してからでないと、本番環境の認証情報へのアクセス権は付与できません。
¶ API 認証情報
アカウントを作成すると、ダッシュボードの [管理] セクションにある [開発者] タブに移動して、API 認証情報にアクセスできます。API を利用するには、「注文者 ID」、「クライアント ID」、「クライアントシークレット」を取得する必要があります。
「注文者 ID」、「クライアント ID」、「クライアントシークレット」の違いについては「よくある質問」を参照してください。
上部にブルーのエリアがある場合は、テストモードであることを示しています。これらの認証情報はテスト用のサンドボックス環境での使用を想定しており、この API を使用しても実際の配達が生成されることはありません。請求情報を入力し、本番環境での配達用にアカウントが承認されたら、下の画像のようなボタンをクリックして本番環境に切り替えます。
¶ 連携フローの概要
このガイドは、大まかなサンプルフローの参考資料として作成されています。利用できる Uber Direct API に合わせて、カスタマイズされたワークフローを自由に作成してください。
¶ Postman を使用したテスト
Postman は API リクエストの実行やテストを簡素化する API 開発環境です。Postman を使用すると、複数のエンドポイント間でデータをコピーしたり貼り付けたりする必要がなくなります。
Postman の設定方法
-
Postman をダウンロードしてインストールします。
-
Uber の Direct API は https://www.postman.com/uber/workspace/uber-direct/overview で利用できます。
-
Uber Direct API 環境を選択し、次の環境変数を設定します。
uber_api_client_id
とuber_api_client_secret
(テスト用アプリケーションから)customer_id
(ダッシュボードの [開発者] タブから)
¶ curl を使用して OAuth トークンを取得する
これまでは Direct ダッシュボードで Direct アカウントの作成プロセスを実行し、クライアント ID、クライアントシークレット、注文者 ID などの開発者用アプリケーションの詳細へのアクセス権を取得する必要がありました。
ここでは、curl コマンドを使用して OAuth アクセストークンを取得する方法の例を紹介します。
curl --request POST 'https://auth.uber.com/oauth/v2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=<your_client_id>' \
--data-urlencode 'client_secret=<your_client_secret>' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=eats.deliveries'
<your_client_id> と <your_client_secret> を、実際の注文者 ID とクライアントシークレットに置き換えます。このコマンドは Uber OAuth サーバーに POST リクエストを送信し、クライアント認証情報のグラントタイプを使用してアクセストークンをリクエストします。応答にはアクセストークンが含まれており、これを使用して API リクエストを認証できます。
{
"access_token": "<TOKEN>",
"expires_in": 2592000,
"token_type": "Bearer",
"scope": "eats.deliveries"
}
その他の例については認証ガイドを参照してください。
¶ Uber Direct API 呼び出しを使用して見積もりを作成する
Create Quote API の主な目的は、2 つの住所間の配達に関連する配達可能性、妥当性、コストを評価することです。実際の配達を始める前に、その前提条件としてこのステップを実行することを強くお勧めします。
curl -X POST 'https://api.uber.com/v1/customers/<your_customer_id>/delivery_quotes' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"pickup_address": "{\"street_address\": [\"20 W 34th St\", \"Floor 2\"],\"state\":\"NY\",\"city\":\"New York\",\"zip_code\":\"10001\",\"country\":\"US\"}",
"dropoff_address": "{\"street_address\": [\"285 Fulton St\", \"\"],\"state\":\"NY\",\"city\":\"New York\",\"zip_code\":\"10006\",\"country\":\"US\"}"
}'
特定の地域については、Create Quote プロセスで緯度と経度の座標を含めることが重要です。指定の Uber 技術担当者に相談のうえ、お住まいの地域の具体的な要件を確認してください。
リクエストが正常に実行されると、API は配達にかかる時間と手数料の見積もりを返します。この情報を基にユーザーに見積もりを表示して、配達を行うことへの確認を取ることができます。
たとえば、下の応答には配達手数料が 5.58 ドル、到着予定時間が 18 分後、ピックアップから受け取りまでの合計時間が 44 分であるという情報が含まれています。
{
"kind": "delivery_quote",
"id": "dqt_AI6aDfhsSNqsVNTG03QKxg",
"created": "2023-07-07T02:36:57.776Z",
"expires": "2023-07-07T02:51:57.776Z",
"fee": 558,
"currency": "usd",
"currency_type": "USD",
"dropoff_eta": "2023-07-07T03:21:29Z",
"duration": 44,
"pickup_duration": 18,
"dropoff_deadline": "2023-07-07T03:57:42Z"
}
上記の「id」は次のステップで使用するため、必ず保存してください。
¶ Uber Direct API 呼び出しを使用してテスト配達を作成する
curl 経由で Uber Direct API を使用して配達を作成するには、前のステップで取得した quote_id を含める必要があります。
curl -X POST 'https://api.uber.com/v1/customers/<your_customer_id>/deliveries' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"quote_id": "dqt_AI6aDfhsSNqsVNTG03QKxg",
"pickup_address": "{\"street_address\": [\"20 W 34th St\", \"Floor 2\"],\"state\":\"NY\",\"city\":\"New York\",\"zip_code\":\"10001\",\"country\":\"US\"}",
"pickup_name": "My Store",
"pickup_phone_number": "4444444444",
"pickup_latitude": 40.74868,
"pickup_longitude": -73.98561,
"dropoff_address": "{\"street_address\": [\"285 Fulton St\", \"\"],\"state\":\"NY\",\"city\":\"New York\",\"zip_code\":\"10006\",\"country\":\"US\"}",
"dropoff_name": "Reese Ippient",
"dropoff_phone_number": "5555555555",
"dropoff_latitude": 40.71301,
"dropoff_longitude": -74.01317,
"manifest_items": [
{
"name": "Cell phone box",
"quantity": 1,
"weight": 30,
"dimensions": {
"length": 40,
"height": 40,
"depth": 40
}
}
]
}'
応答は以下のようになります。
{
"id": "del_Pw2e2GpnS0Gf0XUjb2xi3R",
"quote_id": "dqt_Pw3f2GpnS0Gf0WUjb2yj3Q",
"status": "pending",
"complete": false,
"kind": "delivery",
"pickup": {
"name": "My Store",
"phone_number": "4444444444",
"address": "20 W 34th St, New York, NY 10001",
"detailed_address": {
"street_address_1": "20 W 34th St",
"street_address_2": "",
"city": "New York",
"state": "NY",
"zip_code": "10118",
"country": "US"
},
"notes": "",
"location": {
"lat": 40.74838,
"lng": -73.98477
}
},
"dropoff": {
"name": "Reese Ippient",
"phone_number": "+15555555555",
"address": "285 Fulton St, New York, NY 10007",
"detailed_address": {
"street_address_1": "One World Trade Center",
"street_address_2": "",
"city": "New York",
"state": "NY",
"zip_code": "10006",
"country": "US"
},
"notes": "",
"location": {
"lat": 40.71301,
"lng": -74.01317
}
},
"manifest": {
"description": "1 X Cell phone box\n",
"total_value": 0
},
"manifest_items": [
{
"name": "Cell phone box",
"quantity": 1,
"size": "small",
"must_be_upright": false
}
],
"created": "2023-07-06T06:31:28.314Z",
"updated": "1970-01-01T00:00:00Z",
"pickup_ready": "2023-07-06T06:31:28Z",
"pickup_deadline": "2023-07-06T06:51:28Z",
"dropoff_ready": "2023-07-06T06:31:28Z",
"dropoff_deadline": "2023-07-06T07:23:01Z",
"pickup_eta": "2023-07-06T06:45:57Z",
"dropoff_eta": "2023-07-06T06:56:41Z",
"related_deliveries": null,
"fee": 532,
"currency": "usd",
"tracking_url": "https://www.ubereats.com/orders/xxxxxxxx-6a67-4b41-9fd1-65236f6c62dd",
"undeliverable_action": "",
"courier_imminent": false,
"courier": null,
"live_mode": false,
"undeliverable_reason": "",
"uuid": "3AFXXXXXXXX4B419FD165236F6C62DD",
"fences": null,
"external_id": "",
"items_acquired": null,
"state_changes": null
}
これでテスト配達の作成が完了しました。
リクエストと応答のすべてのフィールドの説明については、Create Delivery の文書を参照してください。
¶ tracking_url を使用して配達を追跡する
Create Delivery リクエストを送信したら、応答に含まれる tracking_url を使用して、配達のあらゆる段階で簡単に進捗状況を追跡できます。
必ず Create Delivery リクエストの応答で返された tracking_url の値を使用してください。この URL は変更されることがあるため、編集したり変更したりしないでください。
追跡用 URL を開くと、次のような画面が表示されます。