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.
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.
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.
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.
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.
- Without warnings - Indicates the request has been processed as anticipated.
- 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.
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 |
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 |
| 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 |
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 |
| 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 |
/{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.
Request Body schema: application/json
Successful operation
Bad Request
Unauthorized
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "name": "Excellent Location",
- "locationExternalId": "152946",
- "contact": {
- "name": "Location Manager",
- "phone": "+1-214-234-2232"
}, - "address": {
- "street1": "6615 Meadowbrook Dr",
- "city": "Fort Worth",
- "state": "TX",
- "postalCode": "76112",
- "countryCode": "US"
}
}- 201
- 400
- 401
- 422
- 500
{- "id": "23232",
- "tenantId": "dummyaccount1",
- "active": true,
- "name": "Excellent Location",
- "locationExternalId": "152946",
- "contact": {
- "name": "Location Manager",
- "phone": "+1-214-234-2232"
}, - "address": {
- "street1": "6615 Meadowbrook Dr",
- "city": "Fort Worth",
- "state": "TX",
- "postalCode": "76112",
- "countryCode": "US"
}, - "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.
Successful response with a list of locations.
Unauthorized
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 500
[- {
- "tenantId": "NYC",
- "id": "23232",
- "name": "NYCStore",
- "locationExternalId": "NYCStore101",
- "description": "Famous Store in Times Square and Central Park 101 Area",
- "timeZone": "America/Chicago",
- "contact": {
- "name": "Peter Brown",
- "phone": "214-234-2232"
}, - "pickupInstructions": "Always be smiling",
- "address": {
- "street1": "7th 42nd Avenue, Times Square",
- "street2": "",
- "city": "Manhattan",
- "state": "NY",
- "postalCode": "10036",
- "countryCode": "US",
- "latitude": 29.9758379,
- "longitude": -95.4718175
}, - "brandExternalId": "NYCBrand101",
- "providers": [
- {
- "name": "FedEx"
}, - {
- "name": "Postmates"
}, - {
- "name": "Shipt"
}
], - "providerAttributes": {
- "Shipt": {
- "deliverablePostalCodes": "22911, 22913, 22904"
}
}, - "createdAt": "2020-01-14T07:25:04.743Z",
- "lastUpdatedAt": "2020-01-14T07:25:04.743Z",
- "active": true,
- "tags": [
- "big&bulky"
]
}
]Get Location
Use this API to get the details of a location using the user-specified locationExternalId which is associated with a location.
Location details retrieved successfully
Unauthorized
Location not found
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 404
- 500
{- "id": "32323",
- "tenantId": "dummyaccount1",
- "active": true,
- "name": "Excellent Location",
- "locationExternalId": "152946",
- "brandExternalId": "devon",
- "contact": {
- "name": "Location Manager",
- "phone": "+1-214-234-2232"
}, - "address": {
- "street1": "6615 Meadowbrook Dr",
- "city": "Fort Worth",
- "state": "TX",
- "postalCode": "76112",
- "countryCode": "US",
- "latitude": 32.7471299,
- "longitude": -97.2155298
}, - "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": {
- "isCorporateAtRisk": true
}, - "tags": [
- "big&bulky"
]
}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.
path Parameters
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. | |||||||||||||||||||
object (components-schemas-Address) Address of the location | |||||||||||||||||||
| |||||||||||||||||||
| 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. | |||||||||||||||||||
| providerAttributes | object Dependent on provider attributes e.g., providerLocationId. | ||||||||||||||||||
| tags | Array of strings Identifiers that can be used for finding and sorting relevant information. | ||||||||||||||||||
Successful response with updated location details
Unauthorized
Bad request error response when location is not found
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "description": "Nice location in Austin, Texas",
- "pickupInstructions": "Park in the designated parking area, and come to the designated pick up desk"
}- 200
- 401
- 404
- 500
{- "id": "232323",
- "tenantId": "dummyaccount1",
- "active": true,
- "name": "Great Location",
- "locationExternalId": "152950",
- "brandExternalId": "devon",
- "contact": {
- "name": "Location Manager",
- "phone": "+1-214-234-2232"
}, - "address": {
- "street1": "5510 S I-35 Frontage Rd",
- "city": "Austin",
- "state": "TX",
- "postalCode": "78745",
- "countryCode": "US",
- "latitude": 30.2008384,
- "longitude": -97.7657652
}, - "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": [
- {
- "name": "DoorDash",
- "providerId": "62667b2cdf13f556ef23e6cd"
}, - {
- "name": "FedEx",
- "providerId": "624c3b88ceebc92a0f5d4f7b"
}
], - "providerAttributes": {
- "FedEx": {
- "accountNumber": "test-account-number",
- "returnStoreService": "FEDEX_GROUND"
}
}, - "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.
path Parameters
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 | ||||||||||||||||||||||||||||
| brandExternalIds | Array of strings An array of location Ids for which timings are being created. This is required when entity is passed as | ||||||||||||||||||||||||||||
| category | string <= 100 characters Required if | ||||||||||||||||||||||||||||
required | object Base timings for each day of the week. | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| 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. | ||||||||||||||||||||||||||||
207
Unauthorized
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "entity": "location",
- "locationExternalIds": [
- "100983"
], - "pickAndPack": 30,
- "timings": {
- "Su": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "Mo": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "Tu": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "We": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "Th": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "Fr": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}, - "Sa": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00",
- "capacity": 0,
- "fee": 0
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00",
- "capacity": 0,
- "fee": 0
}
]
}
}, - "category": "Prime"
}- 207
- 401
- 422
- 500
{- "message": "success"
}Delete Timing
Use this API to remove the timings created for a location for the given category.
path Parameters
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 |
| brandExternalIds | Array of strings An array of location IDs for which timings are being created. Required when entity is passed as |
| category | string <= 100 characters Required if type is |
| entity required | string Can be one value from |
Successful deletion of resource
Unauthorized
Not Found
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "entity": "location",
- "locationExternalIds": [
- "100983"
], - "category": "Prime"
}- 200
- 401
- 404
- 422
- 500
{- "message": "success"
}Get Timing
Use this API to retrieve all the timings/time windows configured for the given location and type.
path Parameters
query Parameters
Successful retrieval of timings
Unauthorized
Timing not found
Processing failed as request contains invalid data
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 404
- 422
- 500
[- {
- "category": "Prime",
- "id": "23232",
- "entity": "location",
- "locationExternalId": "100983",
- "tenantId": "dummyaccount1",
- "type": "delivery",
- "lastUpdatedAt": "2022-04-25T12:12:58.223Z",
- "pickAndPack": 30,
- "timings": {
- "Su": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "Mo": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "Tu": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "We": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "Th": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "Fr": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}, - "Sa": {
- "isOpen": true,
- "is24Hrs": false,
- "hours": [
- {
- "opensAt": "10:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "18:00"
}
]
}
}
}
]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.
path Parameters
query Parameters
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 |
| categories | Array of strings Required if type is |
| pickAndPack | integer <int32> Approximate time duration (in minutes) that a location takes to pick-and-pack an order. Only required for timing type |
| 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 |
| capacity | number >= 0 |
| fee | number >= 0 |
| entity required | string It can be one value from |
| 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. | |
Success
Bad Request
Unauthorized
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "name": "Thanksgiving",
- "entity": "location",
- "locationExternalIds": [
- "100983"
], - "categories": [
- "Prime"
], - "dates": [
- "2025-11-26",
- "2025-11-27"
], - "is24Hrs": false,
- "isOpen": true,
- "pickAndPack": 60,
- "hours": [
- {
- "opensAt": "09:00",
- "closesAt": "10:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "10:00",
- "closesAt": "11:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "11:00",
- "closesAt": "12:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "12:00",
- "closesAt": "13:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "13:00",
- "closesAt": "14:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "14:00",
- "closesAt": "15:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "15:00",
- "closesAt": "16:00",
- "capacity": 90,
- "fee": 5.99
}, - {
- "opensAt": "16:00",
- "closesAt": "17:00",
- "capacity": 90,
- "fee": 5.99
}
]
}- 201
- 400
- 401
- 422
- 500
{- "message": "success"
}Delete Timing Override
Use this API to remove configured overrides for a given location, category, and dates.
path Parameters
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 |
| 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 |
| category | string <= 100 characters Required if type is |
| 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 |
Request was successful
Unauthorized
Resource was not found
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "entity": "location",
- "locationExternalIds": [
- "100983"
], - "category": "Prime",
- "dates": [
- "2025-11-26",
- "2025-11-27"
]
}- 200
- 401
- 404
- 422
- 500
{- "message": "success"
}Get Timing Override
Use this API to retrieve all the overrides configured for a given type and location.
path Parameters
query Parameters
Request was successful
Unauthorized
Timing Override not found
Processing failed as request contains invalid data
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 404
- 422
- 500
[- {
- "category": "Prime",
- "date": "2025-11-26",
- "id": "23232",
- "locationExternalId": "100983",
- "type": "delivery",
- "entity": "location",
- "hours": [
- {
- "opensAt": "09:00",
- "closesAt": "10:00"
}, - {
- "opensAt": "10:00",
- "closesAt": "11:00"
}, - {
- "opensAt": "11:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "13:00"
}, - {
- "opensAt": "13:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "15:00"
}, - {
- "opensAt": "15:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "17:00"
}
], - "is24Hrs": false,
- "isOpen": true,
- "name": "Thanksgiving",
- "pickAndPack": 60,
- "tenantId": "dummyaccount1"
}, - {
- "category": "Prime",
- "date": "2025-11-27",
- "locationExternalId": "100983",
- "type": "delivery",
- "entity": "location",
- "hours": [
- {
- "opensAt": "09:00",
- "closesAt": "10:00"
}, - {
- "opensAt": "10:00",
- "closesAt": "11:00"
}, - {
- "opensAt": "11:00",
- "closesAt": "12:00"
}, - {
- "opensAt": "12:00",
- "closesAt": "13:00"
}, - {
- "opensAt": "13:00",
- "closesAt": "14:00"
}, - {
- "opensAt": "14:00",
- "closesAt": "15:00"
}, - {
- "opensAt": "15:00",
- "closesAt": "16:00"
}, - {
- "opensAt": "16:00",
- "closesAt": "17:00"
}
], - "is24Hrs": false,
- "isOpen": true,
- "name": "Thanksgiving",
- "pickAndPack": 60,
- "tenantId": "dummyaccount1"
}
]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.
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 | ||||||||||||||||||||
| |||||||||||||||||||||
Array of objects (schemas-Package) Package Details | |||||||||||||||||||||
Array
| |||||||||||||||||||||
| 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. | ||||||||||||||||||||
Request was successful
Bad Request
Unauthorized
Alternate Location not found
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "locationExternalId": "7709",
- "deliveryAddress": {
- "street1": "508 S Vine St",
- "street2": "",
- "city": "Atlanta",
- "state": "IL",
- "countryCode": "US",
- "postalCode": "61723"
}, - "packages": [
- {
- "name": "custom",
- "weight": {
- "value": 0,
- "unit": "lb"
}, - "itemQuantity": 1
}
], - "matchProviderTags": [
- "providerTag-1"
]
}- 200
- 400
- 401
- 404
- 422
- 500
[- {
- "provider": "UPS",
- "address": {
- "street1": "60 CLINTON PLZ",
- "street2": "",
- "city": "CLINTON",
- "state": "IL",
- "countryCode": "US",
- "postalCode": "61727",
- "latitude": 40.14812088,
- "longitude": -88.976921
}, - "providerLocationId": "179140",
- "distance": 11.1,
- "locationTimings": [
- "Mon-Sat: 9:00am-8:00pm",
- "Sun: 10:00am-5:00pm"
], - "serviceType": "UPS Access Point",
- "type": "drop-off-point",
- "providerLocationInfo": [
- "CHEMIST'S"
], - "name": "CVS STORE # 6931",
- "phone": "",
- "providerTags": [
- "providerTag-1"
]
}
]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.
Successful response with boundary data
Unauthorized
Boundary not found
Bad request due to invalid boundaryId
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 404
- 422
- 500
{- "message": "success",
- "data": [
- {
- "id": "819745",
- "locationExternalId": "100983",
- "shape": "polygon",
- "latitude": null,
- "longitude": null,
- "type": "in-service",
- "address": null,
- "radius": null,
- "name": "Polygon Boundary 1",
- "status": "inactive",
- "postalCode": null,
- "tags": [
- "sdd"
], - "boundary": [
- {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}, - {
- "latitude": 32.72781162864238,
- "longitude": -96.928815133398
}, - {
- "latitude": 33.013859729261135,
- "longitude": -96.82581830722613
}, - {
- "latitude": 32.94934892068774,
- "longitude": -96.61982465488238
}, - {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}
]
}
]
}Edit Boundary
Use this API to edit a boundary defined for a pickup location.
path Parameters
Request Body schema: application/json
| status required | string Status of the boundary, either active or inactive. | ||||||||||||||||||
required | Array of objects [ 1 .. 10 ] characters | ||||||||||||||||||
Array
| |||||||||||||||||||
Request was successful
Invalid request data
Unauthorized
Boundary not found
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "status": "active",
- "boundaries": [
- {
- "locationExternalId": "100983",
- "shape": "circle",
- "type": "in-service",
- "name": "8 Mile Circle Boundary",
- "radius": 8
}
]
}- 200
- 400
- 401
- 404
- 500
{- "message": "success",
- "data": [
- {
- "id": "819750",
- "locationExternalId": "100983",
- "shape": "circle",
- "latitude": null,
- "longitude": null,
- "type": "in-service",
- "address": null,
- "radius": 8,
- "name": "8 Mile Circle Boundary",
- "status": "active",
- "postalCode": null,
- "tags": [ ],
- "boundary": [
- {
- "latitude": 32.814645,
- "longitude": -96.64779585629269
}, - {
- "latitude": 32.86997213995483,
- "longitude": -96.66089067334062
}, - {
- "latitude": 32.934856202569556,
- "longitude": -96.72425001745674
}, - {
- "latitude": 32.86997213995483,
- "longitude": -96.97875612665936
}, - {
- "latitude": 32.814645,
- "longitude": -96.64779585629269
}
]
}
]
}Delete Boundary
Use this API to remove a boundary associated with a pickup location.
Returns success status
Unauthorized
Boundary not found
Processing failed as request contains invalid data
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 404
- 422
- 500
{- "message": "success"
}List Boundaries
Use this API to list all the boundaries that are defined for the provided pickup locations.
Returns a list of boundaries
Unauthorized
Internal server error
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
- 200
- 401
- 500
{- "message": "success",
- "data": [
- {
- "id": "819745",
- "locationExternalId": "100983",
- "shape": "polygon",
- "latitude": null,
- "longitude": null,
- "address": null,
- "radius": null,
- "status": "inactive",
- "name": "Polygon Boundary 1",
- "type": "in-service",
- "postalCode": null,
- "tags": [
- "sdd"
], - "boundary": [
- {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}, - {
- "latitude": 32.90785280535025,
- "longitude": -96.994733102148
}, - {
- "latitude": 33.08982977767003,
- "longitude": -96.83268476230425
}, - {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}
]
}, - {
- "id": "819749",
- "locationExternalId": "100983",
- "shape": "postal-code",
- "latitude": 32.6402238,
- "longitude": -96.7172907,
- "address": null,
- "radius": null,
- "status": "active",
- "name": "Postal code 75141 Boundary",
- "type": "out-of-service",
- "postalCode": "75141",
- "tags": [ ],
- "boundary": [
- {
- "latitude": 32.618567,
- "longitude": -96.735705
}, - {
- "latitude": 32.638463,
- "longitude": -96.652569
}, - {
- "latitude": 32.619231,
- "longitude": -96.64952
}, - {
- "latitude": 32.606601,
- "longitude": -96.704667
}, - {
- "latitude": 32.6236576,
- "longitude": -96.7176243
}, - {
- "latitude": 32.618567,
- "longitude": -96.735705
}
]
}, - {
- "id": "819750",
- "locationExternalId": "100983",
- "shape": "circle",
- "latitude": null,
- "longitude": null,
- "address": null,
- "radius": 8,
- "status": "active",
- "name": "8 Mile Circle Boundary",
- "type": "in-service",
- "postalCode": null,
- "tags": [ ],
- "boundary": [
- {
- "latitude": 32.814645,
- "longitude": -96.68220136503415
}, - {
- "latitude": 32.92150222531701,
- "longitude": -96.87248907270978
}, - {
- "latitude": 32.701205974664326,
- "longitude": -96.846672127118
}, - {
- "latitude": 32.718476037944356,
- "longitude": -96.74336469396539
}, - {
- "latitude": 32.814645,
- "longitude": -96.68220136503415
}
]
}
]
}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
Request Body schema: application/json
| status required | string Status of the boundary, either active or inactive. | ||||||||||||||||||
required | Array of objects [ 1 .. 10 ] characters | ||||||||||||||||||
Array
| |||||||||||||||||||
Returns success or failure.
Invalid request data
Unauthorized
Processing failed as request contains invalid data
Internal server error
- Payload
- curl
- Node.js
- JavaScript
- PHP
- Python
- C#
- Java
{- "status": "inactive",
- "boundaries": [
- {
- "locationExternalId": "100983",
- "shape": "polygon",
- "type": "in-service",
- "name": "Polygon Boundary 1",
- "tags": [
- "sdd"
], - "boundary": [
- {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}, - {
- "latitude": 32.72781162864238,
- "longitude": -96.928815133398
}, - {
- "latitude": 33.013859729261135,
- "longitude": -96.82581830722613
}, - {
- "latitude": 32.94934892068774,
- "longitude": -96.61982465488238
}, - {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}
]
}
]
}- 201
- 400
- 401
- 422
- 500
{- "message": "success",
- "data": [
- {
- "id": "819745",
- "locationExternalId": "100983",
- "shape": "polygon",
- "latitude": null,
- "longitude": null,
- "type": "in-service",
- "address": null,
- "radius": null,
- "name": "Polygon Boundary 1",
- "status": "inactive",
- "postalCode": null,
- "tags": [
- "sdd"
], - "boundary": [
- {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}, - {
- "latitude": 32.72781162864238,
- "longitude": -96.928815133398
}, - {
- "latitude": 33.013859729261135,
- "longitude": -96.82581830722613
}, - {
- "latitude": 32.94934892068774,
- "longitude": -96.61982465488238
}, - {
- "latitude": 32.88017791805594,
- "longitude": -96.599225289648
}
]
}
]
}