Organization API Resources
Use the organization API to schedule appointments, maintain products and companies, and check warehouse capacity through one base URL.
The examples below use acme.datadocks.com. Replace acme with your organization subdomain, and use a location your API user can access. See Authentication and Access to get started.
Available Resources
| Resource | Common Operations | Location Required? |
|---|---|---|
| Appointments | List, view, create, update | Create only |
| Products | List, view, create, update, delete | Create only |
| Companies | List, view, create, update, delete | No |
| Product limits | List | No |
| Locations | List | No |
| Purchase orders | List, view, create, update, delete | No |
Listing Locations
Purpose
Retrieve the locations your API user can access. Use the returned names when making requests for products, appointments, or other location-specific resources.
HTTP Request
GET https://[organization_subdomain].datadocks.com/api/v1/locations
Query Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
location_name | String | No | Return a single accessible location by name | Toronto |
Code Example
See cURL example
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://acme.datadocks.com/api/v1/locations
Response Format
A successful request returns 200 OK with an array of locations:
[
{ "name": "Toronto", "url": "toronto-acme" },
{ "name": "Vancouver", "url": "vancouver-acme" }
]
| Field | Type | Description |
|---|---|---|
name | String | Display name to use as location_name |
url | String | Location subdomain, such as toronto-acme |
Only locations in your organization that your API user can access are included. Selecting a location without access returns 403 Forbidden. The list is not paginated.
Appointments
Purpose
Schedule deliveries and pickups at a warehouse, retrieve appointment details, or update an existing shipment.
HTTP Requests
| Operation | Method | Path |
|---|---|---|
| List appointments | GET | /api/v1/appointments |
| View an appointment | GET | /api/v1/appointments/123 |
| Create an appointment | POST | /api/v1/appointments |
| Update an appointment | PATCH or PUT | /api/v1/appointments/123 |
Request Body
Send appointment fields inside an appointment object. Include location_name on create to choose the warehouse; updates infer it from the appointment. The warehouse's docks, yards, products, settings, and time zone apply to the appointment.
Code Example
See cURL example: create an appointment
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"appointment": {
"location_name": "Toronto",
"scheduled_at": "2026-10-01T09:00:00-04:00",
"duration": 60,
"dock_name": "Dock 1",
"carrier_name": "FastCo"
}
}' \
https://acme.datadocks.com/api/v1/appointments
Response
A successful create or update returns 200 OK with the appointment details. See the Appointments API for the full field list, filters, response examples, and cancellation instructions.
When updating packing lists, use IDs from the appointment you are changing. Appointment deletion is not supported by the API.
Products
Purpose
Keep each warehouse's product catalog synchronized with your ERP or WMS. Lists combine accessible catalogs. View and update products by ID; an optional location name narrows the lookup.
HTTP Requests
| Operation | Method | Path |
|---|---|---|
| List products | GET | /api/v1/products |
| View a product | GET | /api/v1/products/123 |
| Create a product | POST | /api/v1/products |
| Update a product | PATCH or PUT | /api/v1/products/123 |
| Delete a product | DELETE | /api/v1/products/123 |
Request Body
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
location_name | String | On create | Warehouse where the product belongs | Toronto |
name | String | Yes on create | Product name | Premium Widget |
sku | String | No | Stock keeping unit | WIDGET-001 |
Send these fields inside a product object.
Code Example
See cURL example: create a product
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"product": {
"location_name": "Toronto",
"name": "Premium Widget",
"sku": "WIDGET-001"
}
}' \
https://acme.datadocks.com/api/v1/products
Response
A successful create or update returns 200 OK with the product details. A successful delete returns 204 No Content. An inaccessible product ID, or an ID outside an explicit location filter, returns 404 Not Found.
Product responses include location_name in lists and in single-record, create, and update responses so you can identify the owning warehouse even when names or SKUs match across locations.
See the Products API for additional fields, name and SKU filters, and response examples.
Companies
Purpose
Maintain customer and carrier records used by your organization. Companies are shared across locations, so updating a company changes the record used throughout the organization.
HTTP Requests
| Operation | Method | Path |
|---|---|---|
| List companies | GET | /api/v1/companies |
| View a company | GET | /api/v1/companies/123 |
| Create a company | POST | /api/v1/companies |
| Update a company | PATCH or PUT | /api/v1/companies/123 |
| Delete a company | DELETE | /api/v1/companies/123 |
Request Body
Send company fields inside a company object. No location is required: authorization uses your admin membership in this organization. If you supply a location, its permissions apply, but it does not restrict companies to that warehouse.
Code Example
See cURL example: create a carrier
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"company": {
"name": "Express Logistics",
"company_type": "carrier"
}
}' \
https://acme.datadocks.com/api/v1/companies
Response
A successful create or update returns 200 OK with the company details. See the Companies API for all fields, filters, and response examples.
Product Limits
Purpose
Check the product limits at a warehouse before planning a shipment. This endpoint returns enabled limits and their overrides for the requested dates.
HTTP Request
GET https://[organization_subdomain].datadocks.com/api/v1/product_limits
Query Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
location_name | String | No | Optional warehouse filter | Toronto |
start_date | Date | No | First date to include, in YYYY-MM-DD format | 2026-10-01 |
end_date | Date | No | Last date to include, in YYYY-MM-DD format | 2026-10-07 |
product_name | String | No | Filter by product name | Widgets |
page | Integer | No | Page number | 2 |
Code Example
See cURL example
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://acme.datadocks.com/api/v1/product_limits?location_name=Toronto&start_date=2026-10-01&end_date=2026-10-07"
Response Format
A successful request returns 200 OK with a JSON object containing a product_limits array. Without date filters, each warehouse uses its own current date through seven days later, including override selection. Explicit dates remain local calendar dates. Recurring start/end times remain local wall-clock times. See the Product Limits API for date defaults, filtering rules, and the complete response format.
Product limits are read-only through the API. Manage them in DataDocks.
Additional Routes
The organization and location APIs do not expose new or edit form actions. Retrieve existing records with GET /api/v1/[resource]/[id], create them with POST, and update them with PATCH or PUT.
Bulk uploads are available through the location API.
Help and Support
If a request fails, check the error handling guide. Confirm the location name, your API user's access, and the record ID before retrying.
For help with an integration, contact support@datadocks.com.