API Reference | ReDoc

Location Management

Product Info

The Location Management API sprovides a centralized system for managing operational locations and their associated configurations. Designed to handle stores, warehouses, and distribution centers, it enables businesses to define, update, and customize location attributes to align with their logistics and delivery workflows.

Business Values

  • Streamlined Location Data Management: - Improve operational efficiency by managing structured location data, ensuring seamless integration with delivery workflows.

  • Flexible Timing Configurations: - Enable accurate timing configurations for operations, ensuring alignment with customer expectations and logistical requirements.

  • Advanced Location Features: - Support capabilities such as alternate drop-off locations, service boundaries, and configurable provider attributes, enhancing flexibility.

How does it work once I am setup as a user?

Once set up as a user, you can submit relevant order details to asynchronously place an order from the selected pickup location to the delivery address. By integrating this API into your eCommerce platform, you gain access to a global multi-carrier ecosystem. This enables you to offer flexible, reliable delivery options while maintaining control over your brand’s delivery experience.

FAQs

  • How do I update an existing location?

    Use the Edit Location API to update fields dynamically. You can edit using the storeExternalId or Delivery Solutions _id. Provide only the fields you wish to update in the request body.

  • What is the significance of the storeExternalId?

    The storeExternalId is a unique identifier for the location. It is required during creation and is used by other APIs to associate operations with the specific location.

  • Can I retrieve all my business locations?

    Yes, use the List Locations API to retrieve all locations associated with your business. Each location includes details such as name, address, currency code, pickup instructions, and configured providers.P It enables businesses to define, update, and customize key attributes of their locations which may include stores, warehouses, or distribution centers, depending on the business model. This ensures seamless integration with logistics and delivery workflows.

Error Codes

When the system is unable to respond to a request, be it from a malformed request, an illegal or invalid value, or other issues, the API generates an error response.

Successful response may or may not include warnings.

  1. Without warnings - Indicates the request has been processed as anticipated.
  2. With warnings - Indicates the request has been processed with potentially unanticipated results. The warning contains information in the response that should be passed to the end user.

The severity of an error may be transient or hard.

  • Transient error - Indicates an error that is temporary in nature. Such errors may be caused by response timeouts due to high server loads or scheduled maintenance in progress. The request may be issued successfully at a later time.
  • Hard error - Indicates the request has a problem that the system is not able to resolve. These errors are critical and prevent requests from processing.

/locations

POST

Type HTTP Code Severity Description
INVALID_DATA 400 Hard Bad Request: Missing required fields (e.g., locationExternalId)
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
DUPLICATE_ID 422 Hard Bad Request: Duplicate location ID
NOT_FOUND 422 Hard Bad Request: provider is not configure in system
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request

/locations/{location_external_id}

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
NOT_FOUND 404 Hard Resource Not Found: Location not found

PUT

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
NOT_FOUND 404 Hard Resource Not Found: Location not found

/timings/{type}

POST

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request

DELETE

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request
NOT_FOUND 404 Hard Resource Not Found: Timing not configured for given input

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request
NOT_FOUND 404 Hard Not Found: Timing not configured for given input

/timings/{type}/overrides

POST

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request
INVALID_DATA 400 Hard Invalid data: Invalid Base Timing. Base timings cannot be blank for the mentioned type or other invalid values in the request

DELETE

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request
NOT_FOUND 404 Hard Not Found: Timing Override not configured for given input.

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid locationExternalId or other invalid values in the request
NOT_FOUND 404 Hard Resource Not Found: Timing Override not configured for given input.

/alternate-locations

POST

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
NO_PROVIDER_MATCHED 422 Hard No provider Found: No Provider supporting Alternate Locations was found.
NOT_FOUND 404 Hard Resource Not Found: Alternate location is not found
INVALID_DATA 400 Hard Invalid Data: locationExternalId or providers field is missing or other invalid values in the request

/boundaries

/{boundary_id}

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid boundaryId
NOT_FOUND 404 Hard Resource Not Found: Boundary not found

PUT

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
VALIDATION_ERROR 400 Hard Invalid request data: Missing required fields or invalid values.
NOT_FOUND 404 Hard Resource Not Found: Boundary not found

DELETE

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request
INVALID_DATA 422 Hard Invalid data: Invalid boundaryId
NOT_FOUND 404 Hard Resource Not Found: Boundary not found

/boundaries

GET

Type HTTP Code Severity Description
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request

POST

Type HTTP Code Severity Description
VALIDATION_ERROR 400 Hard Bad Request: Invalid request data, e.g., invalid field shape or other invalid values in the request
UNAUTHORIZED 401 Hard Unauthorized: Invalid or missing authentication token
INVALID_DATA 422 Hard Invalid data: Invalid boundaryId invalid locationExternalId
INTERNAL_SERVER_ERROR 500 Transient Internal Server Error: An unexpected error occurred while processing the request

Create Locations

A Pickup Location represents a physical place within a business, such as a store, warehouse, or distribution center, where a delivery partner or customer can collect an order. Each pickup location is assigned a unique locationExternalId used across the system to identify and manage specific locations in various API operations. During creation, you can assign multiple providers to a pickup location, allowing flexibility in managing delivery options.

Use this API to create, update, retrieve, or delete pickup locations as needed, ensuring that each location is uniquely identifiable and accurately represented for operational purposes.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
Request Body schema: application/json
name
required
string <= 100 characters

Name of the location

description
string <= 10000 characters

description for location

locationExternalId
required
string <= 100 characters

It's a unique id by which your systems can identify the location. It's not editable after the creation of Location.

brandExternalId
string <= 100 characters

It's a unique id that you have associated with the brand during its creation. If not provided, the default brand is chosen.

required
object (schemas-Contact)

Contact information.

name
required
string <= 100 characters

First Name of Contact

phone
required
string <= 20 characters

Phone Number of the Contact

email
string <= 100 characters

Email address of the Contact

required
object (components-schemas-Address)

Address of the location

street1
required
string <= 100 characters

Address Line 1 (Street Number and Street Name)

street2
string <= 100 characters

Address Line 2 (not to be used for apartment / suite

apartmentNumber
string <= 50 characters

Apartment / Suite

city
required
string <= 100 characters

City

state
required
string <= 100 characters

State

postalCode
required
string <= 20 characters

Postal code or zip.

countryCode
string
Default: "US"

2-letter country code in ISO 3166-1 alpha-2 format. If not provided defaults to 'US'.

Enum: "US" "CA" "GB" "AU" "IE"
latitude
number <double>

Latitude coordinates of the address

longitude
number <double>

Longitude coordinates of the address

active
boolean

The location can be marked as active or inactive using the true/false flag. Default is true (location is enabled).

currencyCode
string <= 3 characters

Currency code in ISO 4217 alphabetical format, e.g. USD. It inherits from Brand or Business if not provided.

pickupInstructions
string <= 10000 characters

Pickup instruction for the location. These instruction are given to drivers/customers coming to pick up the order. If not provided it will be inherited from Brand or Business.

returnLocationId
string <= 100 characters

In the case of shipping carriers, if the order can't be delivered then it's returned to the same Location. You can associate a different Location in such a case by entering the desired location's locationExternalId here.

Array of objects

List of the providers that should be assigned for the location.

Array
name
string

Provider Name

providerId
string
providerAttributes
object

Dependent on provider attributes e.g., providerLocationId.

tags
Array of strings

Identifiers that can be used for finding and sorting relevant information.

Responses
201

Successful operation

400

Bad Request

401

Unauthorized

422

Processing failed as request contains invalid data

500

Internal server error

post/location/{version}/locations
Request samples
application/json
{
  • "name": "Excellent Location",
  • "locationExternalId": "152946",
  • "contact": {
    },
  • "address": {
    }
}
Response samples
application/json
{
  • "id": "23232",
  • "tenantId": "dummyaccount1",
  • "active": true,
  • "name": "Excellent Location",
  • "locationExternalId": "152946",
  • "contact": {
    },
  • "address": {
    },
  • "timeZone": "America/Chicago",
  • "createdAt": "2022-04-26T03:03:30.559Z",
  • "lastUpdatedAt": "2022-04-26T03:03:30.559Z"
}

List Locations

Use this API to list all the locations that have been created for the business.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
Responses
200

Successful response with a list of locations.

401

Unauthorized

500

Internal server error

get/location/{version}/locations
Request samples
Response samples
application/json
[
  • {
    }
]

Get Location

Use this API to get the details of a location using the user-specified locationExternalId which is associated with a location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
location_external_id
required
string
Default: "152946"

location_external_id of the Location. A unique id that you have used for the Create Location.

Responses
200

Location details retrieved successfully

401

Unauthorized

404

Location not found

500

Internal server error

get/location/{version}/locations/{location_external_id}
Request samples
Response samples
application/json
{
  • "id": "32323",
  • "tenantId": "dummyaccount1",
  • "active": true,
  • "name": "Excellent Location",
  • "locationExternalId": "152946",
  • "brandExternalId": "devon",
  • "contact": {
    },
  • "address": {
    },
  • "description": "",
  • "pickupInstructions": "",
  • "currencyCode": "USD",
  • "timeZone": "America/Chicago",
  • "createdAt": "2022-04-26T03:03:30.559Z",
  • "lastUpdatedAt": "2022-04-26T03:03:30.559Z",
  • "isDeleted": false,
  • "isTemporary": false,
  • "atRisk": {
    },
  • "tags": [
    ]
}

Edit Location

Use this API to edit a location using the location external ID.

Edits a location using the location external ID assigned to a location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
location_external_id
required
string

locationExternalId of the Location. A unique id which you used during the creation of Location.

Request Body schema: application/json
name
string <= 100 characters

Name of the location

description
string <= 1000 characters

description for location

locationExternalId
string <= 100 characters

It's a unique id by which your systems can identify the location. It's not editable after the creation of Location.

brandExternalId
string <= 100 characters

It's a unique id that you have associated with the brand during its creation. If not provided, the default brand is chosen.

object (schemas-Contact)

Contact information.

name
required
string <= 100 characters

First Name of Contact

phone
required
string <= 20 characters

Phone Number of the Contact

email
string <= 100 characters

Email address of the Contact

object (components-schemas-Address)

Address of the location

street1
required
string <= 100 characters

Address Line 1 (Street Number and Street Name)

street2
string <= 100 characters

Address Line 2 (not to be used for apartment / suite

apartmentNumber
string <= 50 characters

Apartment / Suite

city
required
string <= 100 characters

City

state
required
string <= 100 characters

State

postalCode
required
string <= 20 characters

Postal code or zip.

countryCode
string
Default: "US"

2-letter country code in ISO 3166-1 alpha-2 format. If not provided defaults to 'US'.

Enum: "US" "CA" "GB" "AU" "IE"
latitude
number <double>

Latitude coordinates of the address

longitude
number <double>

Longitude coordinates of the address

active
boolean

The location can be marked as active or inactive using the true/false flag. Default is true (location is enabled).

currencyCode
string <= 3 characters

Currency code in ISO 4217 alphabetical format, e.g. USD. It inherits from Brand or Business if not provided.

pickupInstructions
string <= 10000 characters

Pickup instruction for the location. These instruction are given to drivers/customers coming to pick up the order. If not provided it will be inherited from Brand or Business.

returnLocationId
string <= 100 characters

In the case of shipping carriers, if the order can't be delivered then it's returned to the same Location. You can associate a different Location in such a case by entering the desired location's locationExternalId here.

Array of objects

List of the providers that should be assigned for the location.

Array
name
string

Provider Name

providerId
string
providerAttributes
object

Dependent on provider attributes e.g., providerLocationId.

tags
Array of strings

Identifiers that can be used for finding and sorting relevant information.

Responses
200

Successful response with updated location details

401

Unauthorized

404

Bad request error response when location is not found

500

Internal server error

put/location/{version}/locations/{location_external_id}
Request samples
application/json
{
  • "description": "Nice location in Austin, Texas",
  • "pickupInstructions": "Park in the designated parking area, and come to the designated pick up desk"
}
Response samples
application/json
{
  • "id": "232323",
  • "tenantId": "dummyaccount1",
  • "active": true,
  • "name": "Great Location",
  • "locationExternalId": "152950",
  • "brandExternalId": "devon",
  • "contact": {
    },
  • "address": {
    },
  • "currencyCode": "USD",
  • "description": "Nice location in Austin, Texas",
  • "pickupInstructions": "Park in the designated parking area, and come to the designated pick up desk",
  • "returnLocationId": "152946",
  • "providers": [
    ],
  • "providerAttributes": {
    },
  • "timeZone": "America/Chicago",
  • "lastUpdatedAt": "2022-04-26T04:38:55.794Z",
  • "isDeleted": false,
  • "isTemporary": false
}

Create Timing

Efficient time management is essential for both operations and customer experience in pickup and delivery.

Use this API to set a location's operational hours and create specific time windows for various service categories. Each time window can include its own capacity and fee, allowing for effective scheduling and resource management.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
Request Body schema: application/json
locationExternalIds
Array of strings

An array of location Ids for which timings are being created. This is required when entity is passed as location.

brandExternalIds
Array of strings

An array of location Ids for which timings are being created. This is required when entity is passed as brand.

category
string <= 100 characters

Required if type is pickup, delivery or return

required
object

Base timings for each day of the week.

object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
object (DayTiming)
isOpen
required
boolean
Default: true

Set true to indicate location as open and false for closed.

is24Hrs
required
boolean
Default: true

Set true to indicate location open for 24hrs. This field only applicable for type location.

opensAt
string
closesAt
string
interval
integer
Array of objects
pickAndPack
integer <int32>

Approximate time duration (in minutes) that a location takes to pick-and-pack an order.

entity
required
string

It can be one value from location, brand or business.

Enum: "location" "brand" "business"
Responses
207

207

401

Unauthorized

422

Processing failed as request contains invalid data

500

Internal server error

post/location/{version}/timings/{type}
Request samples
application/json
{
  • "entity": "location",
  • "locationExternalIds": [
    ],
  • "pickAndPack": 30,
  • "timings": {
    },
  • "category": "Prime"
}
Response samples
application/json
{
  • "message": "success"
}

Delete Timing

Use this API to remove the timings created for a location for the given category.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
Request Body schema: application/json
locationExternalIds
Array of strings

An array of location IDs for which timings are being created. Required when entity is passed as location.

brandExternalIds
Array of strings

An array of location IDs for which timings are being created. Required when entity is passed as brand.

category
string <= 100 characters

Required if type is pickup or delivery.

entity
required
string

Can be one value from location, brand, or business.

Enum: "location" "brand" "business"
Responses
200

Successful deletion of resource

401

Unauthorized

404

Not Found

422

Processing failed as request contains invalid data

500

Internal server error

delete/location/{version}/timings/{type}
Request samples
application/json
{
  • "entity": "location",
  • "locationExternalIds": [
    ],
  • "category": "Prime"
}
Response samples
application/json
{
  • "message": "success"
}

Get Timing

Use this API to retrieve all the timings/time windows configured for the given location and type.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
query Parameters
location_external_id
string

Location ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

brand_external_id
string

Brand ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

Responses
200

Successful retrieval of timings

401

Unauthorized

404

Timing not found

422

Processing failed as request contains invalid data

500

Internal server error

get/location/{version}/timings/{type}
Request samples
Response samples
application/json
[
  • {
    }
]

Create Timing Override

Use this API to create an exception for the time window for a location. Timing Overrides are used when a location wants to operate during special hours or it is closed for a particular day. For example, consider if a location is not operational on Thanksgiving day, they can create an override for that day. A particular override is valid for the mentioned dates.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
query Parameters
location_external_id
string

Location ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

brand_external_id
string

Brand ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

Request Body schema: application/json
locationExternalIds
Array of strings
brandExternalIds
Array of strings

An array of brand Ids for which timings are being created. This is required when entity is passed as brand.

categories
Array of strings

Required if type is pickup, delivery, or return.

pickAndPack
integer <int32>

Approximate time duration (in minutes) that a location takes to pick-and-pack an order. Only required for timing type pickup and delivery.

name
required
string <= 100 characters

The name of the timing override.

dates
required
Array of strings

Dates for which the location timing override is being created. It has to be in ISO 8601 format (YYYY-MM-DD).

isOpen
required
boolean

To mark whether location is open or closed for a given day.

is24Hrs
required
boolean

To denote location is open 24hrs. This can be set to true for type location only.

capacity
number >= 0
fee
number >= 0
entity
required
string

It can be one value from location, brand, or business.

Enum: "location" "brand" "business"
opensAt
string

location opening time. Required if hours value is not set and isOpen flag is set to true.

closesAt
string

location closing time. Required if hours value is not set and isOpen flag is set to true.

interval
integer <int32>

Interval between consecutive location operation hours. Required if hours value is not set and isOpen flag is set to true.

Array of objects

Array of Hour objects if is24Hrs flag is set to false. Required if opensAt, closesAt, and interval values are not set.

Array
capacity
number
fee
number
opensAt
string

Required when is24Hrs under Day is marked as false. opensAt field takes 24-hour clock notation, e.g., 13:00.

closesAt
string

Required when is24Hrs under Day is marked as false. closesAt field takes 24-hour clock notation, e.g., 13:00.

Responses
201

Success

400

Bad Request

401

Unauthorized

422

Processing failed as request contains invalid data

500

Internal server error

post/location/{version}/timings/{type}/overrides
Request samples
application/json
{
  • "name": "Thanksgiving",
  • "entity": "location",
  • "locationExternalIds": [
    ],
  • "categories": [
    ],
  • "dates": [
    ],
  • "is24Hrs": false,
  • "isOpen": true,
  • "pickAndPack": 60,
  • "hours": [
    ]
}
Response samples
application/json
{
  • "message": "success"
}

Delete Timing Override

Use this API to remove configured overrides for a given location, category, and dates.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
Request Body schema: application/json
locationExternalIds
Array of strings

An array of location Ids for which timings are being created. This is required when entity is passed as location.

brandExternalIds
Array of strings <= 100 characters

An array of brand Ids for which timings are being created. This is required when entity is passed as brand.

category
string <= 100 characters

Required if type is pickup, delivery, or return.

dates
required
Array of strings

The date for which the location timing override is to be deleted. It has to be in ISO 8601 format (YYYY-MM-DD)

entity
required
string

It can be one value from location, brand, or business.

Enum: "location" "brand" "business"
Responses
200

Request was successful

401

Unauthorized

404

Resource was not found

422

Processing failed as request contains invalid data

500

Internal server error

delete/location/{version}/timings/{type}/overrides
Request samples
application/json
{
  • "entity": "location",
  • "locationExternalIds": [
    ],
  • "category": "Prime",
  • "dates": [
    ]
}
Response samples
application/json
{
  • "message": "success"
}

Get Timing Override

Use this API to retrieve all the overrides configured for a given type and location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
type
required
string

Type of timings. Options are location, pickup, delivery, or return.

Enum: "location" "pickup" "delivery" "return"
query Parameters
location_external_id
string

Location ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

brand_external_id
string

Brand ID for which timing is to be fetched. Either locationExternalId or brandExternalId must be provided, not both.

Responses
200

Request was successful

401

Unauthorized

404

Timing Override not found

422

Processing failed as request contains invalid data

500

Internal server error

get/location/{version}/timings/{type}/overrides
Request samples
Response samples
application/json
[
  • {
    },
  • {
    }
]

Get Alternate Locations

Use this API to get the list of nearby locations. Customers can use these to hold the packages in case they are unavailable at the delivery address or don't want to have home deliveries. These locations can be access points, lockers, grocery stores etc.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
Request Body schema: application/json
locationExternalId
string <= 100 characters

Location Id for which the order is being placed.

required
object (components-schemas-Address)

Address of the location

street1
required
string <= 100 characters

Address Line 1 (Street Number and Street Name)

street2
string <= 100 characters

Address Line 2 (not to be used for apartment / suite

apartmentNumber
string <= 50 characters

Apartment / Suite

city
required
string <= 100 characters

City

state
required
string <= 100 characters

State

postalCode
required
string <= 20 characters

Postal code or zip.

countryCode
string
Default: "US"

2-letter country code in ISO 3166-1 alpha-2 format. If not provided defaults to 'US'.

Enum: "US" "CA" "GB" "AU" "IE"
latitude
number <double>

Latitude coordinates of the address

longitude
number <double>

Longitude coordinates of the address

Array of objects (schemas-Package)

Package Details

Array
name
required
string <= 100 characters
Default: "custom"

Name of package created in our system, or pass the value 'custom'.

description
string <= 10000 characters

A brief description about the package contents.

object (Size)

Dimensions of the item.

object (Weight)

Weight of an item

quantity
integer <int32> >= 1

Number of Packages

itemQuantity
integer <int32> >= 1

Number of items in a single package.

Array of objects (schemas-Item) <= 1000 items

Array of items in the package.

temperatureControl
string

Temperature information of the package

Enum: "frozen" "refrigerated" "cool" "ambient" "warm" "none"
content
Array of strings

Content information of the package

Items Enum: "alcohol" "fragile" "tobacco" "rx" "perishable"
barcode
string <= 500 characters
Default: "null"

Barcode sent to the provider for scanning the packages

type
string

Type of order. Options are 'delivery', 'pickup', or 'shipping'.

matchProviderTags
Array of strings

Alternate locations for providers matching at least one tag from the requested tags.

Responses
200

Request was successful

400

Bad Request

401

Unauthorized

404

Alternate Location not found

422

Processing failed as request contains invalid data

500

Internal server error

post/location/{version}/alternate-locations
Request samples
application/json
{
  • "locationExternalId": "7709",
  • "deliveryAddress": {
    },
  • "packages": [
    ],
  • "matchProviderTags": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get Boundary Details

A boundary defines the service coverage area for a pickup location, illustrating the in-service and out-of-service zones for deliveries. The hierarchy is structured as follows: Account -> Business -> Brand -> Pickup Location -> Order. Boundaries allow businesses to specify service coverage independently of delivery service providers (DSPs), enabling flexibility in managing service areas.

Each boundary can include a coverage map represented by polygons, radius, postal codes, or specific addresses. Multiple boundaries can be added to a single location. Optional tags can also be added to a boundary to assist with order orchestration. Boundaries are used in Delivery Availability (DA) checks and order creation to verify service coverage for a given location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
boundary_id
required
integer <int32>

A unique numeric id for the boundary being fetched

Responses
200

Successful response with boundary data

401

Unauthorized

404

Boundary not found

422

Bad request due to invalid boundaryId

500

Internal server error

get/location/{version}/boundaries/{boundary_id}
Request samples
Response samples
application/json
{
  • "message": "success",
  • "data": [
    ]
}

Edit Boundary

Use this API to edit a boundary defined for a pickup location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
boundary_id
required
integer

A unique numeric id for the boundary being modified

Request Body schema: application/json
status
required
string

Status of the boundary, either active or inactive.

Enum: "active" "inactive"
required
Array of objects [ 1 .. 10 ] characters
Array
name
string <= 100 characters

Name of the boundary

locationExternalId
string <= 100 characters

Unique external, customer defined id

shape
string

Shape of the boundary

Enum: "postal-code" "polygon" "address" "circle" "driving-distance"
type
string

Specify whether this boundary is to be considered for service or out-of-service

Enum: "in-service" "out-of-service"
tags
Array of strings
radius
number <double>

Specifies the radius of coverage in miles. Required only if the shape is circle, address or driving-distance

object (components-schemas-Address)

Address of the location

postalCode
string <= 20 characters

Required only if the shape is post

Array of objects <= 10000 characters
Responses
200

Request was successful

400

Invalid request data

401

Unauthorized

404

Boundary not found

500

Internal server error

put/location/{version}/boundaries/{boundary_id}
Request samples
application/json
{
  • "status": "active",
  • "boundaries": [
    ]
}
Response samples
application/json
{
  • "message": "success",
  • "data": [
    ]
}

Delete Boundary

Use this API to remove a boundary associated with a pickup location.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
boundary_id
required
integer

A unique numeric id for the boundary being deleted

Responses
200

Returns success status

401

Unauthorized

404

Boundary not found

422

Processing failed as request contains invalid data

500

Internal server error

delete/location/{version}/boundaries/{boundary_id}
Request samples
Response samples
application/json
{
  • "message": "success"
}

List Boundaries

Use this API to list all the boundaries that are defined for the provided pickup locations.

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
query Parameters
location_external_ids
string

Specify the location_external_ids separated by a comma (,) to retrieve all the configured boundaries for a particular location.

Responses
200

Returns a list of boundaries

401

Unauthorized

500

Internal server error

get/location/{version}/boundaries
Request samples
Response samples
application/json
{
  • "message": "success",
  • "data": [
    ]
}

Create Boundaries

Use this API to include an In-Service or an Out-of-Service coverage area for a location

A boundary can be a single area or a combination of areas from the below:

a. polygon - provide the latitude and longitude details b. radius - provide a distance in miles c. postal code - use comma (,) to separate multiple postal codes d. address - address location, if provided, will be used as the center point to determine the boundary location. This can differ from the pickup location address e. driving distance - provide a driving distance in miles

SecurityOAuth2ClientCredentials
Request
path Parameters
version
required
string
Default: "v1"

version

Value: "v1"
Request Body schema: application/json
status
required
string

Status of the boundary, either active or inactive.

Enum: "active" "inactive"
required
Array of objects [ 1 .. 10 ] characters
Array
name
string <= 100 characters

Name of the boundary

locationExternalId
string <= 100 characters

Unique external, customer defined id

shape
string

Shape of the boundary

Enum: "postal-code" "polygon" "address" "circle" "driving-distance"
type
string

Specify whether this boundary is to be considered for service or out-of-service

Enum: "in-service" "out-of-service"
tags
Array of strings
radius
number <double>

Specifies the radius of coverage in miles. Required only if the shape is circle, address or driving-distance

object (components-schemas-Address)

Address of the location

postalCode
string <= 20 characters

Required only if the shape is post

Array of objects <= 10000 characters
Responses
201

Returns success or failure.

400

Invalid request data

401

Unauthorized

422

Processing failed as request contains invalid data

500

Internal server error

post/location/{version}/boundaries
Request samples
application/json
{
  • "status": "inactive",
  • "boundaries": [
    ]
}
Response samples
application/json
{
  • "message": "success",
  • "data": [
    ]
}