Device Assignment
Assign Device to Owners
Create device-to-customer mappings
POST
/
api
/
ext-v1
/
deviceAssignment
/
assignDeviceToOwners
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["john.doe@example.com"]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": [
"john.doe@example.com",
"jane.smith@example.com"
]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-67890-FGHIJ",
"customerEmails": ["john.doe@example.com"],
"autoCreateDevice": true,
"deviceType": "Thermostat"
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["new.customer@example.com"]
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['john.doe@example.com']
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: [
'john.doe@example.com',
'jane.smith@example.com'
]
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-67890-FGHIJ',
customerEmails: ['john.doe@example.com'],
autoCreateDevice: true,
deviceType: 'Thermostat'
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['new.customer@example.com']
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['john.doe@example.com']
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': [
'john.doe@example.com',
'jane.smith@example.com'
]
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-67890-FGHIJ',
'customerEmails': ['john.doe@example.com'],
'autoCreateDevice': True,
'deviceType': 'Thermostat'
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['new.customer@example.com']
}
)
result = response.json()
{
"success": true,
"message": "Successfully assigned device to 2 customer(s)",
"deviceId": "dev_a1b2c3d4e5f6",
"deviceWasCreated": false,
"assignedCustomers": [
{
"email": "john.doe@example.com",
"customerId": "cust_111222333",
"wasCreated": false
},
{
"email": "jane.smith@example.com",
"customerId": "cust_444555666",
"wasCreated": true
}
]
}
{
"success": true,
"message": "Successfully assigned device to 1 customer(s)",
"deviceId": "dev_x1y2z3w4v5",
"deviceWasCreated": true,
"assignedCustomers": [
{
"email": "new.customer@example.com",
"customerId": "cust_777888999",
"wasCreated": true
}
]
}
{
"error": "Device not found with the provided identifier. Set autoCreateDevice to true to create it automatically."
}
{
"error": "deviceType is required when creating a new device"
}
{
"error": "No valid customer emails provided"
}
Overview
Assigns a device to one or more customers. Creates the mapping for telemetry correlation. Features:- Auto-creates customers if they don’t exist
- Supports multi-owner assignments (shared/family devices)
- Optional auto-create for devices (requires
deviceType)
Authentication
Your organization’s API key
Request Body
The unique identifier for the device (e.g., serial number, MAC address)
Array of customer email addresses to assign the device to. Must contain at least one valid email.
If
true, creates the device automatically if it doesn’t exist in the system. Defaults to false.Required when
autoCreateDevice is true. Specifies the device type (e.g., “Thermostat”, “Sensor”, “Gateway”). This field is mandatory for creating new devices.Response
Indicates if the operation was successful
Description of the operation result
The unique device ID in the Telemetron system
Indicates whether the device was created during this operation. Always present in the response.
Examples
Single Customer Assignment
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["john.doe@example.com"]
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['john.doe@example.com']
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['john.doe@example.com']
}
)
result = response.json()
Bulk Assignment (Multiple Customers)
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": [
"john.doe@example.com",
"jane.smith@example.com"
]
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: [
'john.doe@example.com',
'jane.smith@example.com'
]
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': [
'john.doe@example.com',
'jane.smith@example.com'
]
}
)
result = response.json()
Auto-Create Device
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-67890-FGHIJ",
"customerEmails": ["john.doe@example.com"],
"autoCreateDevice": true,
"deviceType": "Thermostat"
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-67890-FGHIJ',
customerEmails: ['john.doe@example.com'],
autoCreateDevice: true,
deviceType: 'Thermostat'
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-67890-FGHIJ',
'customerEmails': ['john.doe@example.com'],
'autoCreateDevice': True,
'deviceType': 'Thermostat'
}
)
result = response.json()
Response
{
"success": true,
"message": "Successfully assigned device to 2 customer(s)",
"deviceId": "dev_a1b2c3d4e5f6",
"deviceWasCreated": false,
"assignedCustomers": [
{
"email": "john.doe@example.com",
"customerId": "cust_111222333",
"wasCreated": false
},
{
"email": "jane.smith@example.com",
"customerId": "cust_444555666",
"wasCreated": true
}
]
}
{
"success": true,
"message": "Successfully assigned device to 1 customer(s)",
"deviceId": "dev_x1y2z3w4v5",
"deviceWasCreated": true,
"assignedCustomers": [
{
"email": "new.customer@example.com",
"customerId": "cust_777888999",
"wasCreated": true
}
]
}
{
"error": "Device not found with the provided identifier. Set autoCreateDevice to true to create it automatically."
}
{
"error": "deviceType is required when creating a new device"
}
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["john.doe@example.com"]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": [
"john.doe@example.com",
"jane.smith@example.com"
]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-67890-FGHIJ",
"customerEmails": ["john.doe@example.com"],
"autoCreateDevice": true,
"deviceType": "Thermostat"
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["new.customer@example.com"]
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['john.doe@example.com']
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: [
'john.doe@example.com',
'jane.smith@example.com'
]
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-67890-FGHIJ',
customerEmails: ['john.doe@example.com'],
autoCreateDevice: true,
deviceType: 'Thermostat'
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['new.customer@example.com']
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['john.doe@example.com']
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': [
'john.doe@example.com',
'jane.smith@example.com'
]
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-67890-FGHIJ',
'customerEmails': ['john.doe@example.com'],
'autoCreateDevice': True,
'deviceType': 'Thermostat'
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['new.customer@example.com']
}
)
result = response.json()
{
"success": true,
"message": "Successfully assigned device to 2 customer(s)",
"deviceId": "dev_a1b2c3d4e5f6",
"deviceWasCreated": false,
"assignedCustomers": [
{
"email": "john.doe@example.com",
"customerId": "cust_111222333",
"wasCreated": false
},
{
"email": "jane.smith@example.com",
"customerId": "cust_444555666",
"wasCreated": true
}
]
}
{
"success": true,
"message": "Successfully assigned device to 1 customer(s)",
"deviceId": "dev_x1y2z3w4v5",
"deviceWasCreated": true,
"assignedCustomers": [
{
"email": "new.customer@example.com",
"customerId": "cust_777888999",
"wasCreated": true
}
]
}
{
"error": "Device not found with the provided identifier. Set autoCreateDevice to true to create it automatically."
}
{
"error": "deviceType is required when creating a new device"
}
{
"error": "No valid customer emails provided"
}
Status Codes
| Code | Description |
|---|---|
| 200 | Device successfully assigned to customers |
| 400 | Invalid request (missing required fields, invalid email array, or no valid emails) |
| 401 | Invalid or missing API key |
| 404 | Device not found (when autoCreateDevice is false) |
| 500 | Internal server error |
Implementation Notes
- Multi-owner support: Assign a single device to multiple customers for shared/family accounts
- Auto-create customers: Non-existent customers are automatically created using email prefix as name
- Auto-create devices: Set
autoCreateDevice: trueand providedeviceTypeto create devices on-the-fly - Email handling: Emails are trimmed, lowercased, and validated. Invalid emails are skipped
- Idempotent: Re-assigning an already-assigned device won’t create duplicates
Required: When
autoCreateDevice is true, you must provide deviceType or the request will fail with a 400 error.⌘I
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["john.doe@example.com"]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": [
"john.doe@example.com",
"jane.smith@example.com"
]
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-67890-FGHIJ",
"customerEmails": ["john.doe@example.com"],
"autoCreateDevice": true,
"deviceType": "Thermostat"
}'
curl -X POST https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"deviceIdentifier": "SN-12345-ABCDE",
"customerEmails": ["new.customer@example.com"]
}'
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['john.doe@example.com']
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: [
'john.doe@example.com',
'jane.smith@example.com'
]
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-67890-FGHIJ',
customerEmails: ['john.doe@example.com'],
autoCreateDevice: true,
deviceType: 'Thermostat'
})
}
);
const result = await response.json();
const response = await fetch(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
{
method: 'POST',
headers: {
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deviceIdentifier: 'SN-12345-ABCDE',
customerEmails: ['new.customer@example.com']
})
}
);
const result = await response.json();
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['john.doe@example.com']
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': [
'john.doe@example.com',
'jane.smith@example.com'
]
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-67890-FGHIJ',
'customerEmails': ['john.doe@example.com'],
'autoCreateDevice': True,
'deviceType': 'Thermostat'
}
)
result = response.json()
import requests
response = requests.post(
'https://admin.telemetron.ai/api/ext-v1/deviceAssignment/assignDeviceToOwners',
headers={
'x-api-key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={
'deviceIdentifier': 'SN-12345-ABCDE',
'customerEmails': ['new.customer@example.com']
}
)
result = response.json()
{
"success": true,
"message": "Successfully assigned device to 2 customer(s)",
"deviceId": "dev_a1b2c3d4e5f6",
"deviceWasCreated": false,
"assignedCustomers": [
{
"email": "john.doe@example.com",
"customerId": "cust_111222333",
"wasCreated": false
},
{
"email": "jane.smith@example.com",
"customerId": "cust_444555666",
"wasCreated": true
}
]
}
{
"success": true,
"message": "Successfully assigned device to 1 customer(s)",
"deviceId": "dev_x1y2z3w4v5",
"deviceWasCreated": true,
"assignedCustomers": [
{
"email": "new.customer@example.com",
"customerId": "cust_777888999",
"wasCreated": true
}
]
}
{
"error": "Device not found with the provided identifier. Set autoCreateDevice to true to create it automatically."
}
{
"error": "deviceType is required when creating a new device"
}
{
"error": "No valid customer emails provided"
}