Skip to main content

DOTS Public API – Getting Started Guide

The DOTS Public API allows you to retrieve up-to-date information about employees and the assets assigned to them.

Written by Denys Ivanov
Updated this week

Dots API is designed for easy integration with your internal systems, such as HR, procurement tools, or inventory systems, so you can automate visibility into who owns what and where assets are located within your organization.

The API includes two main Core endpoints:

  1. Get Employee Details – Retrieve employee data using their email address. The response also includes all assets currently assigned to that employee.

  2. Get Asset Details – Retrieve detailed information about a specific asset, including model, serial number, purchase date, and assignment status.

And an additional four new endpoints to support deeper client integrations and broader access to operational data:

  1. GET Locations – Retrieve list of costume locations.

  2. GET WH – Retrieve warehouse list.

  3. GET Assets by serial number – Retrieve asset details by serial number.

  4. GET WH assets – Retrieve list of assets within a warehouse.

These additions allow clients to programmatically access more operational data, enabling deeper and more flexible integrations with their internal systems.


Authentication

All requests require an API key that can be generated from your Client Dashboard → Tab Settings → API Access section.

The key must be passed in the request header:

authorization: YOUR_API_KEY


This API is READ-ONLY and returns structured JSON responses, making it simple to connect with your internal dashboards, inventory systems, or reporting tools.

Core Endpoints

Get Employee Details

Endpoint:

GET https://dots-public-api.dotstech.com/api/v1/company-staff?email=EMPLOYEE_EMAIL

Description:

Retrieves information about an employee by their email address and lists all assets currently assigned to that employee.

Example for API response of Employee data retrieval:

{
"id": "string",
"email": "string",
"phone": "string",
"fullName": "string",
"status": "EMPLOYED",
"wasOffboarded": false,
"wasOnboarded": true,
"role": {
"name": "string"
},
"team": {
"name": "string"
},
"addressInfo": {
"address": "string",
"addressLine2": "string,
"addressAdditionalInfo": "string",
"zipCode": "string",
"country": {
"name": "string",
"alphaCode2": "SE"
},
"city": {
"name": "string"
},
"state": {
"name": "string"
}
},
"assetsId": [
"string",
"string"
]
}


Employee API Response Example (with Values):

{
"id": "5bd9d28f-13cb-4k64-98cb-3b3e6219cccc",
"email": "dots@dotstech.com",
"phone": "+380674642387",
"fullName": "Denys",
"status": "EMPLOYED",
"wasOffboarded": false,
"wasOnboarded": true,
"role": {
"name": "Head of R&D"
},
"team": {
"name": "R&D"
},
"addressInfo": {
"address": "Eliezer Kaplan Street 2, Tel Aviv-Yafo, Israel",
"addressLine2": "string",
"addressAdditionalInfo": "2nd floor",
"zipCode": "0432",
"country": {
"name": "Israel",
"alphaCode2": "IL"
},
"city": {
"name": "Tel Aviv-Yafo"
},
"state": {
"name": "string"
}
},
"assetsId": [
"b16fea6a-e935-4d31-a508-8e4005c9ad27",
"7c08e001-1fe8-4e88-8d71-ae8c598392ce"
]
}

Get Asset Details

Endpoint:

https://dots-public-api.dotstech.com/api/v1/asset/ASSET_ID

Description:

Returns detailed information about a specific asset.

Example for API response of Asset data retrieval:

{
"id": "0ac8facb-a822-4557-ae17-346a20644018",
"name": "Test asset ",
"model": "Test asset model name",
"condition": "USED",
"serialNumber": "Test asset serial number",
"diskEncryption": "No disc encryption ",
"purchaseDate": "2025-11-03T00:00:00.000Z",
"status": "IN_USE",
"dpn": "CS-NT-APL-2445-0024",
"application": null,
"keyboardLanguage": "UK ENGLISH",
"productCode": "Test asset MPN",
"ipAddress": "Test asset IP",
"notes": "Test asset note ",
"sku": null,
"price": 100,
"image": "Test asset immage url",
"warrantyUntil": "2025-11-25T00:00:00.000Z",
"assignee": {
"fullName": "DOTS TEST API",
"email": "dotstestapu@gmail.com"
},
"os": {
"name": null,
"version": null
},
"brand": {
"name": "Apple"
},
"subcategory": {
"name": "Notebooks & Laptops"
},
"category": {
"name": "Computer systems"
}
}

Asset API Response Example (with Values):

{
"id": "0ac8facb-a822-4557-ae17-346a20644018",
"name": "Denys Macbook",
"model": "MacBook Air (13-inch, M4, 2024)",
"condition": "USED",
"serialNumber": "SDKSMW820",
"diskEncryption": "No disc encryption",
"purchaseDate": "2025-11-03T00:00:00.000Z",
"status": "IN_USE",
"dpn": "CS-NT-APL-2445-0024",
"application": "[{\"name\":\"Activity Monitor\",\"version\":\"10.14\",\"path\":\"/System/Applications/Utilities/Activity Monitor.app\",\"bundle_id\":\"com.apple.ActivityMonitor\"},{\"name\":\"iPhone Mirroring\",\"version\":\"1.2\",\"path\":\"/System/Applications/iPhone Mirroring.app\",\"bundle_id\":\"com.apple.ScreenContinuity\"}]",
"keyboardLanguage": "UK ENGLISH",
"productCode": "Z1600076U",
"ipAddress": "192.168.0.0",
"notes": "Test asset note",
"sku": null,
"price": 100,
"image": "Test asset immage url",
"warrantyUntil": "2025-11-25T00:00:00.000Z",
"assignee": {
"fullName": "DOTS TEST API",
"email": "dotstestapi@gmail.com"
},
"os": {
"name": "Mac",
"version": "15.7.2"
},
"brand": {
"name": "Apple"
},
"subcategory": {
"name": "Notebooks & Laptops"
},
"category": {
"name": "Computer systems"
}
}

Operational Endpoints


Get Locations

Endpoint:

https://dots-public-api.dotstech.com/api/v1/location

Description:

Returns a list of locations and the assets stored in each location.

Example Response:

[
{
"id": "location_id",
"name": "Berlin Warehouse",
"country": "Germany",
"region": "Europe",
"city": "Berlin",
"assetsCount": 8,
"assets": [
"asset_uuid_1",
"asset_uuid_2",
"asset_uuid_3"
],
"spaces": [
{
"id": "space_uuid_1",
"name": "Floor 1"
}
]
}
]

Get Warehouses

Endpoint:

https://dots-public-api.dotstech.com/api/v1/warehouse

Description:

Returns a list of warehouses with asset counts per warehouse.

Example Response:

[
{
"id": "warehouse_id",
"name": "London Warehouse",
"country": "United Kingdom",
"assetsCount": 1947
}
]

Get Warehouse Assets

Endpoint:

https://dots-public-api.dotstech.com/api/v1/warehouse/{ID}/assets

Description:

Returns a list of assets stored in a specific warehouse.

Example Response:

{
"id": "warehouse_id",
"name": "Location name",
"country": "United Kingdom",
"assetsCount": 590,
"assets": [
"asset_id_1",
"asset_id_2",
"asset_id_3"
]
}

Get Asset by Serial Number

Endpoint:

https://dots-public-api.dotstech.com/api/v1/asset/{SERIAL_NUMBER}

Description:

Returns detailed information about an asset using its serial number.

Example Response:

{
"id": "asset_id",
"name": "Asset name",
"model": "Model name",
"condition": "NEW",
"serialNumber": "SERIAL_NUMBER",
"diskEncryption": true,
"purchaseDate": "2026-01-15",
"status": "PENDING",
"dpn": "DPN_CODE",
"application": "Assigned application",
"keyboardLanguage": "EN",
"productCode": "PRODUCT_CODE",
"ipAddress": "192.168.1.10",
"notes": "Additional notes about the asset",
"sku": "SKU_CODE",
"price": 1299.99,
"image": "https://api.example.com/assets/image.png",
"warrantyUntil": "2029-01-15",
"assignee": {
"fullName": "John Doe",
"email": "john.doe@example.com"
},
"os": {
"name": "Windows",
"version": "11 Pro"
},
"brand": {
"name": "Brand name"
},
"subcategory": {
"name": "Subcategory name"
},
"category": {
"name": "Category name"
}
}



Error Handling & Rate Limits

All API responses include a “success” field and return standard HTTP status codes.

If a request fails, the response will contain a clear “message” explaining what went wrong.

For example:

success: false

message: Invalid API key


Common HTTP Status Codes

200 – OK

Request completed successfully.

400 – Bad Request

Missing or invalid parameter (for example, missing “email”).

401 – Unauthorized

Invalid or missing x-api-key header.

404 – Not Found

Employee or asset not found.

429 – Too Many Requests

Rate limit exceeded — wait and retry later.

500 – Internal Server Error

Unexpected error on the server side.


Rate Limits

To ensure stable performance, the API enforces per-minute and per-day limits for each organization.

If you exceed these limits, you will receive HTTP 429 Too Many Requests.

Rate limit information is also included in each response header:

x-ratelimit-limit-day – maximum number of requests allowed per day

x-ratelimit-limit-minute – maximum number of requests allowed per minute

x-ratelimit-remaining-day – how many requests remain for the current day

x-ratelimit-remaining-minute – how many requests remain for the current minute

x-ratelimit-reset-day – timestamp when the daily limit resets

Tip: Use these headers to monitor your usage and prevent rate limit errors. If your integration sends many requests, add retry logic that waits until reset before sending more.

If you have any questions please reach our support - support@dotstech.com

Did this answer your question?