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.

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 FieldRequired/OptionalField PropertiesDescription
shipFromAddress.phoneNumberRequiredStringThe phone number of the contact for the origin address
destinationAddress.phoneNumberRequiredStringThe phone number of the contact for the destination address
lastMileDeliveryOptions .deliveryInstructionOptionalString enumeration
Values are:

- Leave_At_Door
- Meet_At_Door
Instructions passed to the carrier on how to handle the last mile of delivery
lastMileDeliveryOptions .undeliverableInstructionOptionalString enumeration
Values are:

- Leave_At_Door
- Return
- Destroy
Instructions passed to the carrier on how to handle packages that go undelivered
lastMileDeliveryOptions.tip .tipTypeOptionalString enumeration
Values are:

- fixed
- percentage
The way the tip ought to be applied; the default value is fixed.
lastMileDeliveryOptions.tip .tipValueOptionalNumber ($float)The value to be passed through as a tip amount
lastMileDeliveryOptions.tip .currencyCodeOptionalString
Ex.: usd
The 3-character currency code of the tip
lastMileDeliveryOptions .tipForLabelCreate .tipTypeOptionalString enumeration
Values are:

- fixed
- percentage
The way the tip ought to be applied; the default value is fixed.
lastMileDeliveryOptions .tipForLabelCreate .tipValueOptionalNumber ($float)The value to be passed through as a tip amount
lastMileDeliveryOptions .tipForLabelCreate .currencyCodeOptionalString
Ex.: usd
The 3-character currency code of the tip
lastMileDeliveryOptions .deliverableActionFor LabelCreateOptionalString 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 LabelCreateOptionalString 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 .hourOptional, but required when including pickupWindowInteger ($int32)The start time hour for the pickup timeframe
pickupWindow.startWindow.minuteOptional, but required when including pickupWindowInteger ($int32)The start time minute for the pickup timeframe
pickupWindow.startWindow.secondOptional, but required when including pickupWindowInteger ($int32)The start time second for the pickup timeframe
pickupWindow.startWindow.nanoOptional, but required when including pickupWindowInteger ($int32)The start time nano for the pickup timeframe
pickupWindow.endWindow.hourOptional, but required when including pickupWindowInteger ($int32)The end time hour for the pickup timeframe
pickupWindow.endWindow.minuteOptional, but required when including pickupWindowInteger ($int32)The end time minute for the pickup timeframe
pickupWindow.endWindow.secondOptional, but required when including pickupWindowInteger ($int32)The end time second for the pickup timeframe
pickupWindow.endWindow.nanoOptional, but required when including pickupWindowInteger ($int32)The end time nano for the pickup timeframe
pickupWindow.timeZone.idOptionalStringThe 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 .fixedOffsetOptionalBoolean
true or false
When true, this indicates that there is a fixed offset for the time zone.
pickupWindow.timeZone.rules .transitions.offsetBefore .totalSecondsOptionalInteger ($int32)The total seconds of the offset before
pickupWindow.timeZone.rules .transitions.offsetBefore.idOptionalStringThe string ID of the offset before
pickupWindow.timeZone.rules .transitions.offsetAfter .totalSecondsOptionalInteger ($int32)The total seconds of the offset after
pickupWindow.timeZone.rules .transitions.offsetAfter.idOptionalStringThe string ID of the offset after
pickupWindow.timeZone.rules .transitions.duration.secondsOptionalInteger ($int64)The number of seconds of the pickup window's duration
pickupWindow.timeZone.rules .transitions.duration.zeroOptionalBoolean
true or false
When true, this indicates that there is a zero-value duration for the pickup window.
pickupWindow.timeZone.rules .transitions.duration.nanoOptionalInteger ($int32)The number of nanos of the pickup window's duration
pickupWindow.timeZone.rules .transitions.duration.negativeOptionalBoolean
true or false
When true, this indicates that there is a negative duration for the pickup window.
pickupWindow.timeZone.rules .transitions.duration.units .durationEstimatedOptionalBoolean
true or false
When true, this indicates that the duration units are estimated.
pickupWindow.timeZone.rules .transitions.duration.units .timeBasedOptionalBoolean
true or false
When true, this indicates that the duration units are time based.
pickupWindow.timeZone.rules .transitions.duration.units .dateBasedOptionalBoolean
true or false
When true, this indicates that the duration units are date based.
pickupWindow.timeZone.rules .transitions.gapOptionalBoolean
true or false
When true, this indicates that there is a gap in the pickup window.
pickupWindow.timeZone.rules .transitions.dateTimeAfterOptionalString ($date-time)The date-time after the pickup window
pickupWindow.timeZone.rules .transitions.dateTimeBeforeOptionalString ($date-time)The date-time before the pickup window
pickupWindow.timeZone.rules .transitions.overlapOptionalBoolean
true or false
When true, this indicates that there is overlap in the pickup window.
pickupWindow.timeZone.rules .transitions.instantOptionalString ($date-time)The date-time instant of the pickup window
pickupWindow.timeZone.rules .transitionRules.monthOptionalString 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.timeDefinitionOptionalString enumeration
Values are:

- utc
- wall
- standard
The time definition of the transition rule
pickupWindow.timeZone.rules .transitionRules.standardOffset .totalSecondsOptionalInteger ($int32)The total seconds of the standard offset
pickupWindow.timeZone.rules .transitionRules.standardOffset .idOptionalStringThe string ID for the standard offset
pickupWindow.timeZone.rules .transitionRules.offsetBefore .totalSecondsOptionalInteger ($int32)The total seconds of the offset before
pickupWindow.timeZone.rules .transitionRules.offsetBefore .idOptionalStringThe string ID for the offset before
pickupWindow.timeZone.rules .transitionRules.offsetAfter .totalSecondsOptionalInteger ($int32)The total seconds of the offset after
pickupWindow.timeZone.rules .transitionRules.offsetAfter .idOptionalStringThe string ID for the offset after
pickupWindow.timeZone.rules .transitionRules.dayOfWeek OptionalString enumeration
Values are:

- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
The weekday of the transition rule
pickupWindow.timeZone.rules .transitionRules .dayOfMonthIndicatorOptionalInteger ($int32)The number of the day of the month of the transition rule
pickupWindow.timeZone.rules .transitionRules.localTime .hourOptionalInteger ($int32)The hour of the local time that ends the pickup window
pickupWindow.timeZone.rules .transitionRules.localTime .minuteOptionalInteger ($int32)The minute of the local time that ends the pickup window
pickupWindow.timeZone.rules .transitionRules.localTime .secondOptionalInteger ($int32)The second of the local time that ends the pickup window
pickupWindow.timeZone.rules .transitionRules.localTime .nanoOptionalInteger ($int32)The nano of the local time that ends the pickup window
pickupWindow.timeZone.rules .transitionRules .midnightEndOfDayOptionalBoolean
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: