HubRise
ENexpand_more
    Log InSign Up
    menu
    HubRise
    closeHubRise

    API Reference

    Deliveries

    HubRise offers two complementary resources to manage order deliveries:

    • Delivery quotes enable third-party services to provide cost estimates and delivery timeframes.

    • Deliveries represent the actual fulfillment process. They contain real-time tracking information including the estimated and actual pickup and drop-off times, driver details, and current delivery status.

    While an order can have multiple delivery quotes, only a single delivery can be created and tracked per order.

    The most general workflow is as follows - in scenarios with a single provider, a delivery may be created directly without quotes:

    • An order is created, and sent to one or several delivery quote providers.
    • Each provider creates a delivery quote for the order.
    • The business or customer accepts one of the quotes.
    • The provider whose quote was accepted creates a delivery for the order.
    • The provider updates the delivery status as the order is picked up and delivered.

    Delivery Quotes

    1. Create a Delivery Quote

    Creates a delivery quote for an order.

    Endpoint:
    POST /locations/:location_id/orders/:order_id/delivery_quotes
    Short endpoint:
    POST /location/orders/:order_id/delivery_quotes (location only)
    Access level:
    Location, Account

    This endpoint can only be called for orders whose service_type is set to delivery.

    Parameters:
    NameTypeDescription
    carrierstringThe name of the carrier.
    carrier_ref optionalstringA ref code that identifies the carrier.
    ref optionalstringThe carrier's identifier of the quote.
    feestringThe quoted delivery fee.
    estimated_pickup_at optionalTimeThe estimated pickup time.
    estimated_dropoff_at optionalTimeThe estimated drop-off time.
    Example request

    POST /location/orders/5dpm9/delivery_quotes

    { "carrier": "UPS", "carrier_ref": "ups", "ref": "1Z12345E0291980793", "status": "pending", "fee": "4.50 EUR", "estimated_pickup_at": "2023-01-01T12:00:00+01:00", "estimated_dropoff_at": "2023-01-01T12:30:00+01:00"}

    2. Accept a Delivery Quote

    Marks a delivery quote as accepted, and saves the acceptance time.

    This action is not reversible, and will usually result in the creation of a delivery by the carrier. Several quotes can be accepted for the same order, for example if the first carrier does not create a delivery in time.

    Endpoint:
    POST /locations/:location_id/orders/:order_id/delivery_quotes/:id/accept
    Short endpoint:
    POST /location/orders/:order_id/delivery_quotes/:id/accept (location only)
    Access level:
    Location, Account
    Example request

    POST /location/orders/5dpm9/delivery_quotes/ez351/accept

    3. Retrieve Delivery Quote

    Retrieves a delivery quote attached to an order.

    Endpoint:
    GET /locations/:location_id/orders/:order_id/delivery_quotes/:id
    Short endpoint:
    GET /location/orders/:order_id/delivery_quotes/:id (location only)
    Access level:
    Location, Account

    All the fields of a delivery quote creation request are returned, plus a few more:

    NameTypeDescription
    idstringThe id of the delivery quote.
    order_idstringThe id of the order.
    location_idstringThe id of the location.
    accepted_at optionalTimeTime the quote was accepted by the customer or the business, or null if it has not been accepted.
    Example request

    GET /location/orders/5dpm9/delivery_quotes/ez351

    Response:
    { "id": "ez351", "order_id": "5dpm9", "location_id": "3r4s3-1", "carrier": "UPS", "carrier_ref": "ups", "ref": "Q12345E029198"; "fee": "4.50 EUR", "estimated_pickup_at": "2023-01-01T12:17:00+01:00", "estimated_dropoff_at": null, "accepted_at": "2023-01-01T11:45:00+01:00"}

    4. List Delivery Quotes

    Returns the delivery quotes attached to an order.

    Endpoint:
    GET /locations/:location_id/orders/:order_id/delivery_quotes
    Short endpoint:
    GET /location/orders/:order_id/delivery_quotes (location only)
    Access level:
    Location, Account
    Example request

    GET /location/orders/5dpm9/delivery_quotes

    [ { "id": "ez351", "order_id": "5dpm9", "location_id": "3r4s3-1", "carrier": "UPS", "carrier_ref": "ups", "ref": "Q12345E029198"; "fee": "4.50 EUR", "estimated_pickup_at": "2023-01-01T12:17:00+01:00", "estimated_dropoff_at": null, "accepted_at": "2023-01-01T11:45:00+01:00" }, { "id": "a5z32", "order_id": "5dpm9", "location_id": "3r4s3-1", "carrier": "FedEx", "carrier_ref": "fedex", "ref": "FQ6678136645"; "fee": "6.50 EUR", "estimated_pickup_at": "2023-01-01T12:10:00+01:00", "estimated_dropoff_at": "2023-01-01T12:40:00+01:00", "accepted_at": null }]

    Deliveries

    1. Create a Delivery

    Attaches a delivery to an order.

    Endpoint:
    POST /locations/:location_id/orders/:order_id/delivery
    Short endpoint:
    POST /location/orders/:order_id/delivery (location only)
    Access level:
    Location, Account

    This endpoint can only be called if:

    • The order has no delivery yet.
    • The order's service_type is set to delivery.
    Parameters:
    NameTypeDescription
    carrierstringThe name of the carrier.
    carrier_ref optionalstringA ref code that identifies the carrier.
    ref optionalstringThe carrier's identifier of the delivery, such as a tracking number.
    statusstringThe delivery status. See Delivery Statuses.
    fee optionalstringThe delivery fee charged by the carrier to the business.
    estimated_pickup_at optionalTimeThe pickup time, estimated by the carrier.
    estimated_dropoff_at optionalTimeThe drop-off time, estimated by the carrier.
    tracking_url optionalstringURL where the customer can track the delivery status, the driver position, or both.
    driver_pickup_url optionalstringURL the driver must scan at the pickup location to confirm handover of the order. Often displayed as a QR code; scanning it notifies the carrier that the order was collected.
    driver_name optionalstringThe driver name.
    driver_phone optionalstringThe driver phone number.
    driver_phone_access_code optionalstringThe access code to provide when calling the phone number above.
    driver_latitude optionaldecimalThe current latitude of the driver.
    driver_longitude optionaldecimalThe current longitude of the driver.
    assigned_at optionalTimeTime the status changed to pickup_enroute.
    pickup_at optionalTimeTime the status changed to dropoff_enroute.
    delivered_at optionalTimeTime the status changed to delivered.
    cancelled_at optionalTimeTime the status changed to cancelled.
    Example request

    POST /location/orders/5dpm9/delivery

    { "carrier": "UPS", "carrier_ref": "ups", "ref": "1Z12345E0291980793", "status": "pending", "fee": "4.50 EUR", "estimated_pickup_at": "2023-01-01T12:00:00+01:00", "estimated_dropoff_at": "2023-01-01T12:30:00+01:00", "tracking_url": "https://www.ups.com/track/1Z12345E0291980793", "driver_pickup_url": "https://driver.ups.com/pickup/1Z12345E0291980793", "driver_name": "John", "driver_phone": "+33612345678", "driver_phone_access_code": "1234", "driver_latitude": "48.856614", "driver_longitude": "2.3522219"}

    Delivery statuses

    The following statuses are available:

    StatusDescription
    pendingNot started
    pickup_enrouteEn route to pickup
    pickup_approachingNearing pickup
    pickup_waitingAt pickup
    dropoff_enrouteEn route to dropoff
    dropoff_approachingNearing dropoff
    dropoff_waitingAt dropoff
    deliveredCompleted
    cancelledCancelled

    2. Retrieve a Delivery

    Retrieves the delivery attached to an order.

    Endpoint:
    GET /locations/:location_id/orders/:order_id/delivery
    Short endpoint:
    GET /location/orders/:order_id/delivery (location only)
    Access level:
    Location, Account

    If the order has no delivery, a 404 - Not Found error is returned.

    Example request

    GET /location/orders/5dpm9/delivery

    { "id": "ez351", "order_id": "5dpm9", "location_id": "3r4s3-1", "carrier": "UPS", "carrier_ref": "ups", "ref": "1Z12345E0291980793", "status": "pickup_waiting", "fee": "4.50 EUR", "estimated_pickup_at": "2023-01-01T12:17:00+01:00", "estimated_dropoff_at": "2023-01-01T12:29:00+01:00", "tracking_url": "https://www.ups.com/track?tracknum=1Z12345E0291980793", "driver_name": "John", "driver_phone": "+33612345678", "driver_phone_access_code": "1234", "driver_latitude": "48.856702", "driver_longitude": "2.35222", "assigned_at": "2023-01-01T12:11:03+01:00", "pickup_at": null, "delivered_at": null, "cancelled_at": null}

    3. Update a Delivery

    Updates the delivery attached to an order.

    Endpoint:
    PATCH /locations/:location_id/orders/:order_id/delivery
    Short endpoint:
    PATCH /location/orders/:order_id/delivery (location only)
    Access level:
    Location, Account

    All fields can be updated, except: carrier, carrier_ref, fee.

    If the order has no delivery, a 404 - Not Found error is returned.

    Example request

    PATCH /location/orders/5dpm9/delivery

    { "driver_latitude": "48.856614", "driver_longitude": "2.3522219"}

    Auto-updated fields

    The following fields are updated automatically when the delivery status changes:

    StatusField
    pickup_enrouteassigned_at
    dropoff_enroutepickup_at
    delivereddelivered_at
    cancelledcancelled_at

    You can manually override these fields if required. This can be useful when status updates are skipped or delayed.

    Feedback on this page