Pre-Requisite
Dispatch needs to be enabled and configured for the channel to use the endpoint.
Mandatory Delivery Information
In order to ascertain the most accurate delivery information a full delivery address including coordinates and postal code must be sent.
Check availability for multiple stores (currently in beta)
An array of
channelLinkIds
can be provided to determine the best possible pickup location for a specific delivery, based on price and distance.Please check the second example on the right hand side named "Validate Delivery - multiple pickupLocations".
"channelLinkIds": ["61bcc34f657cc48c23eb60d5","61bcc34f657cc48c23eb602a]
When providing the array
"channelLinkIds"
, the"channelLinkId"
field will be disregarded.The
"channelLinkId"
selected will be included on the response to the call for multiple locations.
This endpoint allows the aggregator to validate if a Dispatch partner is available to carry out the delivery before submitting the actual order. This is dependant on the Deliverect customer having one or more of our integrated Dispatch Partners connected.
The parameters marked with an asterisk (*) are required :
Parameter | Meaning | type |
---|---|---|
channelLinkId * orchannelLinkIds * | Unique identifier(s) of the channel(s) (merchant store) in Deliverect. e.g. "channelLinkIds": ["61bcc34f657cc48c23eb60d5","61bcc34f657cc48c23eb602a] | string/ array |
deliveryLocations * | Object containing the address for the delivery including coordinates | object |
deliveryLocations.deliveryTime * | Expected time for the delivery of the order (UTC) Time format is in UTC yyyy-MM-ddTHH:mm:ssZ (all time values in our API are in UTC time as per ISO8601). If the deliveryTime is less than 30 minutes from now, Deliverect will assume it is an ASAP order request. | string |
deliveryLocations.street * | This includes the street number where provided e.g. "Stationsstraat 79e" | string |
deliveryLocations.postalCode * | e.g. "3811MH" | string |
deliveryLocations.city * | e.g. "Amersfoort" | string |
deliveryLocations.coordinates * | Object containing longitude and latitude expressed as below; "coordinates": { "coordinates": [ 9.124598503112793, 45.50004196166992 ] } | object |
deliveryLocations.country | e.g. "The Netherlands" | string |
deliveryLocations.streetNumber | If the number has already been included on the "street" field, it should not be repeated here. e.g." 79e" | str |
Error Status:
Supported statues in addition to network errors:
Status Name | Integer Value |
---|---|
Success. Dispatch partner is requested. | 200 |
Bad request | 400 |
ChannelLinkId sent is not linked to the account | 403 |
ChannelLinkId sent is not found | 404 |
Unauthorized | 401 |
NOTE
Please note, that even if status 200 is received, the parameter "available" determines whether a dispatch partner is available to accept the job.
Example request:
{
"channelLinkId": "61**c34f657cc48c23eb6**5",
"deliveryLocations": {
"deliveryTime": "2023-05-17T10:00:00Z",
"name": "John Doe",
"street": "Stationsstraat 79e",
"city": "Amersfoort",
"country": "The Netherlands",
"postalCode": "3811 MH",
"phone": "+31678776787",
"coordinates": {
"coordinates":
[ 9.124598503112793,
45.50004196166992 ]
}
}
}
{
"channelLinkIds": ["61bcc34**57cc48c23eb65", "61bcc34f657cc**c23eb6a"],
"deliveryLocations": {
"deliveryTime": "2023-05-17T10:00:00Z",
"name": "John Doe",
"street": "Stationsstraat 79e",
"city": "Amersfoort",
"country": "The Netherlands",
"postalCode": "3811 MH",
"phone": "+31678776787",
"coordinates": {
"coordinates":
[ 9.124598503112793,
45.50004196166992 ]
}
}
}
Example response:
{ "validationId": "6317******4b5efe",
"available": true,
"expiresAt": "2022-09-06 10:24:25.445709",
"deliveryTimeETA": "2022-08-08 11:00:00",
"pickupTimeEta":"2022-08-08 10:00:00",
"price": 0
}
{
"channelLinkId": "61**c34f657cc48c23eb6**5",
"validationId": "6317******4b5efe",
"available": true,
"expiresAt": "2022-09-06 10:24:25.445709",
"deliveryTimeETA": "2022-08-08 11:00:00",
"pickupTimeEta":"2022-08-08 10:00:00",
"price": 0
}
{
"available": False,
"errors": "No valid offers available"
}
If the validation is successful and the available flag is set "true" , the validationId
returned in the response is valid for 10 minutes. This validationId
can be used by the ChannelIntegrations
to send the orders using the existing Create Order API , which is now extended with the optional parameter to support the validationID
.
NOTE
If separate deliveryLocations are sent during the order creation with validationID it will be ignored and the deliveryLocations used in the dispatchAvailability request will be used.