Uber Direct
Ensure you have provided required credentials to ship with Uber Direct.
Uber Direct credential requirements
Prior to shipping with Uber Direct, you must configure credentials in the Shipium Console. You'll provide a client ID, client secret, and customer ID for production and for test mode.

Uber Direct's service methods and their identifiers are listed on the Supported Carriers page.
Additional requirements
For single-parcel shipments, the following additional fields should be nested in the shipmentParameters property. For multi-parcel shipments, they should be included in multiParcelShipmentParameters. While a phone number is required for both the shipper and recipient, the other fields are optional.
Required fields
| Request field | Details |
|---|---|
shipFromAddress.phoneNumber | Type: String Description: The phone number of the contact for the origin address |
destinationAddress.phoneNumber | Type: String Description: The phone number of the contact for the destination address |
Conditional fields
| Request field | Details |
|---|---|
pickupWindow.startWindow.hour | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The start time hour for the pickup timeframe |
pickupWindow.startWindow.minute | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The start time minute for the pickup timeframe |
pickupWindow.startWindow.second | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The start time second for the pickup timeframe |
pickupWindow.startWindow.nano | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The start time nano for the pickup timeframe |
pickupWindow.endWindow.hour | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The end time hour for the pickup timeframe |
pickupWindow.endWindow.minute | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The end time minute for the pickup timeframe |
pickupWindow.endWindow.second | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The end time second for the pickup timeframe |
pickupWindow.endWindow.nano | Type: Integer (int32) Condition: Required when including pickupWindowDescription: The end time nano for the pickup timeframe |
Optional fields
| Request field | Details |
|---|---|
lastMileDeliveryOptions.deliveryInstruction | Type: String (enumeration) Values: Leave_At_Door or Meet_At_DoorDescription: Instructions passed to the carrier on how to handle the last mile of delivery |
lastMileDeliveryOptions.undeliverableInstruction | Type: String (enumeration) Values: Leave_At_Door, Return, DestroyDescription: Instructions passed to the carrier on how to handle packages that go undelivered |
lastMileDeliveryOptions.tip.tipType | Type: String (enumeration) Values: fixed or percentageDescription: The way the tip ought to be applied; the default value is fixed. |
lastMileDeliveryOptions.tip.tipValue | Type: Number (float) Description: The value to be passed through as a tip amount |
lastMileDeliveryOptions.tip.currencyCode | Type: String Example: usdDescription: The 3-character ISO 4217 currency code of the tip |
lastMileDeliveryOptions.tipForLabelCreate .tipType | Type: String (enumeration) Values: fixed or percentageDescription: The way the tip ought to be applied; the default value is fixed. |
lastMileDeliveryOptions.tipForLabelCreate .tipValue | Type: Number (float) Description: The value to be passed through as a tip amount |
lastMileDeliveryOptions.tipForLabelCreate .currencyCode | Type: String Example: usdDescription: The 3-character ISO 4217 currency code of the tip |
lastMileDeliveryOptions .deliverableActionForLabelCreate | Type: String (enumeration) Values: Return, Leave_At_Door, Discard or Meet_At_DoorDescription: Instructions passed to the carrier on how to handle a deliverable delivery |
lastMileDeliveryOptions .undeliverableActionForLabelCreate | Type: String (enumeration) Values: Return, Leave_At_Door, Discard or Meet_At_DoorDescription: Instructions passed to the carrier on how to handle an undeliverable delivery |
pickupWindow.timeZone.id | Type: String Description: The string ID for the time zone for this delivery window; if no time zone is passed, the time zone will be taken from the destination address. |
pickupWindow.timeZone.rules.fixedOffset | Type: Boolean Values: true or falseDescription: When true, this indicates that there is a fixed offset for the time zone. |
pickupWindow.timeZone.rules.transitions .offsetBefore.totalSeconds | Type: Integer (int32) Description: The total seconds of the offset before |
pickupWindow.timeZone.rules.transitions .offsetBefore.id | Type: String Description: The string ID of the offset before |
pickupWindow.timeZone.rules.transitions .offsetAfter.totalSeconds | Type: Integer (int32) Description: The total seconds of the offset after |
pickupWindow.timeZone.rules.transitions .offsetAfter.id | Type: String Description: The string ID of the offset after |
pickupWindow.timeZone.rules.transitions .duration.seconds | Type: Integer (int64) Description: The number of seconds of the pickup window's duration |
pickupWindow.timeZone.rules.transitions .duration.zero | Type: Boolean Values: true or falseDescription: When true, this indicates that there is a zero-value duration for the pickup window. |
pickupWindow.timeZone.rules.transitions .duration.nano | Type: Integer (int32) Description: The number of nanos of the pickup window's duration |
pickupWindow.timeZone.rules.transitions .duration.negative | Type: Boolean Values: true or falseDescription: When true, this indicates that there is a negative duration for the pickup window. |
pickupWindow.timeZone.rules.transitions .duration.units.durationEstimated | Type: Boolean Values: true or falseDescription: When true, this indicates that the duration units are estimated. |
pickupWindow.timeZone.rules.transitions .duration.units.timeBased | Type: Boolean Values: true or falseDescription: When true, this indicates that the duration units are time based. |
pickupWindow.timeZone.rules.transitions .duration.units.dateBased | Type: Boolean Values: true or falseDescription: When true, this indicates that the duration units are date based. |
pickupWindow.timeZone.rules.transitions.gap | Type: Boolean Values: true or falseDescription: When true, this indicates that there is a gap in the pickup window. |
pickupWindow.timeZone.rules.transitions .dateTimeAfter | Type: String (date-time) Description: The date-time after the pickup window |
pickupWindow.timeZone.rules.transitions .dateTimeBefore | Type: String (date-time) Description: The date-time before the pickup window |
pickupWindow.timeZone.rules.transitions.overlap | Type: Boolean Values: true or falseDescription: When true, this indicates that there is overlap in the pickup window. |
pickupWindow.timeZone.rules.transitions.instant | Type: String (date-time) Description: The date-time instant of the pickup window |
pickupWindow.timeZone.rules.transitionRules.month | Type: String (enumeration) Values: January, February, March, April, May, June, July, August, September, October, November, DecemberDescription: The month of the transition rule |
pickupWindow.timeZone.rules.transitionRules .timeDefinition | Type: String (enumeration) Values: utc, wall, standardDescription: The time definition of the transition rule |
pickupWindow.timeZone.rules.transitionRules .standardOffset.totalSeconds | Type: Integer (int32) Description: The total seconds of the standard offset |
pickupWindow.timeZone.rules.transitionRules .standardOffset.id | Type: String Description: The string ID for the standard offset |
pickupWindow.timeZone.rules.transitionRules .offsetBefore.totalSeconds | Type: Integer (int32) Description: The total seconds of the offset before |
pickupWindow.timeZone.rules.transitionRules .offsetBefore.id | Type: String Description: The string ID for the offset before |
pickupWindow.timeZone.rules.transitionRules .offsetAfter.totalSeconds | Type: Integer (int32) Description: The total seconds of the offset after |
pickupWindow.timeZone.rules.transitionRules .offsetAfter.id | Type: String Description: The string ID for the offset after |
pickupWindow.timeZone.rules.transitionRules .dayOfWeek | Type: String (enumeration) Values: Monday or Tuesday or Wednesday or Thursday or Friday or Saturday or SundayDescription: The weekday of the transition rule |
pickupWindow.timeZone.rules.transitionRules .dayOfMonthIndicator | Type: Integer (int32) Description: The number of the day of the month of the transition rule |
pickupWindow.timeZone.rules.transitionRules .localTime.hour | Type: Integer (int32) Description: The hour of the local time that ends the pickup window |
pickupWindow.timeZone.rules.transitionRules .localTime.minute | Type: Integer (int32) Description: The minute of the local time that ends the pickup window |
pickupWindow.timeZone.rules.transitionRules .localTime.second | Type: Integer (int32) Description: The second of the local time that ends the pickup window |
pickupWindow.timeZone.rules.transitionRules .localTime.nano | Type: Integer (int32) Description: The nano of the local time that ends the pickup window |
pickupWindow.timeZone.rules.transitionRules .midnightEndOfDay | Type: Boolean Values: true or falseDescription: When true, this indicates that the pickup window ends at midnight. |
A snippet of the JSON request for the API call with the required and optional fields is included. This example is for a single-parcel shipment. A multi-parcel shipment would be included in multiParcelShipmentParameters.
{
"shipmentParameters": {
"shipFromAddress": {
"phoneNumber": "8123334545",
...
},
"destinationAddress": {
"phoneNumber": "31299163377",
...
},
"lastMileDeliveryOptions": {
"deliveryInstruction": "LEAVE_AT_DOOR",
"undeliverableInstruction": "LEAVE_AT_DOOR",
"tip": {
"tipType": "fixed",
"tipValue": 5,
"currencyCode": "usd",
"carrierObjectTip": "string"
},
"tipForLabelCreate": {
"tipType": "fixed",
"tipValue": 0,
"currencyCode": "usd",
"carrierObjectTip": "string"
},
"deliverableActionForLabelCreate": "RETURN",
"undeliverableActionForLabelCreate": "RETURN"
},
"pickupWindow": {
"startWindow": {
"hour": 0,
"minute": 0,
"second": 0,
"nano": 0
},
"endWindow": {
"hour": 0,
"minute": 0,
"second": 0,
"nano": 0
},
"timeZone": {
"id": "7ea92d86-5522-47f9-b4b3-7684d67399d8",
"rules": {
"fixedOffset": true,
"transitions": [
{
"offsetBefore": {
"totalSeconds": 0,
"id": "f03c77f3-76a7-491b-9901-a37d7ca188b3"
},
"offsetAfter": {
"totalSeconds": 0,
"id": "4765e1c5-a9cd-492a-956c-7c997eac119f"
},
"duration": {
"seconds": 0,
"zero": true,
"nano": 0,
"negative": true,
"units": [
{
"durationEstimated": true,
"timeBased": true,
"dateBased": true
}
]
},
"gap": true,
"dateTimeAfter": "2024-08-02T15:12:30.388Z",
"dateTimeBefore": "2024-08-02T15:12:30.388Z",
"overlap": true,
"instant": "2024-08-02T15:12:30.388Z"
}
],
"transitionRules": [
{
"month": "January",
"timeDefinition": "utc",
"standardOffset": {
"totalSeconds": 0,
"id": "56c4af6f-d5d4-40dc-919c-e6aa46a1057b"
},
"offsetBefore": {
"totalSeconds": 0,
"id": "a670c662-4ed6-41db-9855-d83748e25eb0"
},
"offsetAfter": {
"totalSeconds": 0,
"id": "573c4ee7-326f-4826-a214-4b74d4ba1964"
},
"dayOfWeek": "Monday",
"dayOfMonthIndicator": 0,
"localTime": {
"hour": 0,
"minute": 0,
"second": 0,
"nano": 0
},
"midnightEndOfDay": true
}
]
}
}
}
...
}
}Resources
Your Shipium team member is available to help along the way. However, you might find these resources helpful:
Updated 2 months ago
