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.

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.

Reference Field

Required/Optional

Field Properties

Description

shipFromAddress.phoneNumber

Required

String

The phone number of the contact for the origin address

destinationAddress.phoneNumber

Required

String

The phone number of the contact for the destination address

lastMileDeliveryOptions
  .deliveryInstruction

Optional

String enumeration
Values are:

  • Leave_At_Door
  • Meet_At_Door

Instructions passed to the carrier on how to handle the last mile of delivery

lastMileDeliveryOptions
  .undeliverableInstruction

Optional

String enumeration
Values are:

  • Leave_At_Door
  • Return
  • Destroy

Instructions passed to the carrier on how to handle packages that go undelivered

lastMileDeliveryOptions.tip
  .tipType

Optional

String enumeration
Values are:

  • fixed
  • percentage

The way the tip ought to be applied; the default value is fixed.

lastMileDeliveryOptions.tip
  .tipValue

Optional

Number ($float)

The value to be passed through as a tip amount

lastMileDeliveryOptions.tip
  .currencyCode

Optional

String
Ex.: usd

The 3-character currency code of the tip

lastMileDeliveryOptions
  .tipForLabelCreate
  .tipType

Optional

String enumeration
Values are:

  • fixed
  • percentage

The way the tip ought to be applied; the default value is fixed.

lastMileDeliveryOptions
  .tipForLabelCreate
  .tipValue

Optional

Number ($float)

The value to be passed through as a tip amount

lastMileDeliveryOptions
  .tipForLabelCreate
  .currencyCode

Optional

String
Ex.: usd

The 3-character currency code of the tip

lastMileDeliveryOptions
  .deliverableActionFor
LabelCreate

Optional

String enumeration
Values are:

  • Return
  • Leave_At_Door
  • Discard
  • Meet_At_Door

Instructions passed to the carrier on how to handle a deliverable delivery

lastMileDeliveryOptions
  .undeliverableActionFor
LabelCreate

Optional

String enumeration
Values are:

  • Return
  • Leave_At_Door
  • Discard
  • Meet_At_Door

Instructions passed to the carrier on how to handle an undeliverable delivery

pickupWindow.startWindow
  .hour

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The start time hour for the pickup timeframe

pickupWindow.startWindow.minute

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The start time minute for the pickup timeframe

pickupWindow.startWindow.second

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The start time second for the pickup timeframe

pickupWindow.startWindow.nano

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The start time nano for the pickup timeframe

pickupWindow.endWindow.hour

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The end time hour for the pickup timeframe

pickupWindow.endWindow.minute

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The end time minute for the pickup timeframe

pickupWindow.endWindow.second

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The end time second for the pickup timeframe

pickupWindow.endWindow.nano

Conditional (optional, but required when including pickupWindow)

Integer ($int32)

The end time nano for the pickup timeframe

pickupWindow.timeZone.id

Optional

String

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

Optional

Boolean
true or false

When true, this indicates that there is a fixed offset for the time zone.

pickupWindow.timeZone.rules
  .transitions.offsetBefore
  .totalSeconds

Optional

Integer ($int32)

The total seconds of the offset before

pickupWindow.timeZone.rules
  .transitions.offsetBefore.id

Optional

String

The string ID of the offset before

pickupWindow.timeZone.rules
  .transitions.offsetAfter
  .totalSeconds

Optional

Integer ($int32)

The total seconds of the offset after

pickupWindow.timeZone.rules
  .transitions.offsetAfter.id

Optional

String

The string ID of the offset after

pickupWindow.timeZone.rules  
  .transitions.duration.seconds

Optional

Integer ($int64)

The number of seconds of the pickup window's duration

pickupWindow.timeZone.rules  
  .transitions.duration.zero

Optional

Boolean
true or false

When true, this indicates that there is a zero-value duration for the pickup window.

pickupWindow.timeZone.rules  
  .transitions.duration.nano

Optional

Integer ($int32)

The number of nanos of the pickup window's duration

pickupWindow.timeZone.rules  
  .transitions.duration.negative

Optional

Boolean
true or false

When true, this indicates that there is a negative duration for the pickup window.

pickupWindow.timeZone.rules  
  .transitions.duration.units
  .durationEstimated

Optional

Boolean
true or false

When true, this indicates that the duration units are estimated.

pickupWindow.timeZone.rules  
  .transitions.duration.units
  .timeBased

Optional

Boolean
true or false

When true, this indicates that the duration units are time based.

pickupWindow.timeZone.rules  
  .transitions.duration.units
  .dateBased

Optional

Boolean
true or false

When true, this indicates that the duration units are date based.

pickupWindow.timeZone.rules  
  .transitions.gap

Optional

Boolean
true or false

When true, this indicates that there is a gap in the pickup window.

pickupWindow.timeZone.rules  
  .transitions.dateTimeAfter

Optional

String ($date-time)

The date-time after the pickup window

pickupWindow.timeZone.rules  
  .transitions.dateTimeBefore

Optional

String ($date-time)

The date-time before the pickup window

pickupWindow.timeZone.rules  
  .transitions.overlap

Optional

Boolean
true or false

When true, this indicates that there is overlap in the pickup window.

pickupWindow.timeZone.rules  
  .transitions.instant

Optional

String ($date-time)

The date-time instant of the pickup window

pickupWindow.timeZone.rules  
  .transitionRules.month

Optional

String enumeration
Values are:

  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December

The month of the transition rule

pickupWindow.timeZone.rules  
  .transitionRules.timeDefinition

Optional

String enumeration
Values are:

  • utc
  • wall
  • standard

The time definition of the transition rule

pickupWindow.timeZone.rules  
  .transitionRules.standardOffset
  .totalSeconds

Optional

Integer ($int32)

The total seconds of the standard offset

pickupWindow.timeZone.rules  
  .transitionRules.standardOffset
  .id

Optional

String

The string ID for the standard offset

pickupWindow.timeZone.rules  
  .transitionRules.offsetBefore
  .totalSeconds

Optional

Integer ($int32)

The total seconds of the offset before

pickupWindow.timeZone.rules  
  .transitionRules.offsetBefore
  .id

Optional

String

The string ID for the offset before

pickupWindow.timeZone.rules  
  .transitionRules.offsetAfter
  .totalSeconds

Optional

Integer ($int32)

The total seconds of the offset after

pickupWindow.timeZone.rules  
  .transitionRules.offsetAfter
  .id

Optional

String

The string ID for the offset after

pickupWindow.timeZone.rules  
  .transitionRules.dayOfWeek

Optional

String enumeration
Values are:

  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday

The weekday of the transition rule

pickupWindow.timeZone.rules  
  .transitionRules
  .dayOfMonthIndicator

Optional

Integer ($int32)

The number of the day of the month of the transition rule

pickupWindow.timeZone.rules  
  .transitionRules.localTime
  .hour

Optional

Integer ($int32)

The hour of the local time that ends the pickup window

pickupWindow.timeZone.rules  
  .transitionRules.localTime
  .minute

Optional

Integer ($int32)

The minute of the local time that ends the pickup window

pickupWindow.timeZone.rules  
  .transitionRules.localTime
  .second

Optional

Integer ($int32)

The second of the local time that ends the pickup window

pickupWindow.timeZone.rules  
  .transitionRules.localTime
  .nano

Optional

Integer ($int32)

The nano of the local time that ends the pickup window

pickupWindow.timeZone.rules  
  .transitionRules
  .midnightEndOfDay

Optional

Boolean
true or false

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: