Panels
Introduction
Panels represent cloud nodes, which act as gateways to the PDK cloud platform. Each cloud node contains a unique set of people, credentials, groups, and rules.
The panel object
{
"id": "1234ABC",
"name": "Test Panel",
"ouId": "649d9ca6e5adcb0001f2678f",
"online": true,
"allowCredentialResets": true,
"credentialResetsPerMonth": 1,
"reportBillingPolicy": "basic",
"uri": "https://panel-1234ABC.pdk.io/",
"registeredDate": "2023-07-19T20:30:26.306Z"
}
Property | Type | Description |
---|---|---|
id | String | The cloud node serial number. |
name | String | The cloud node name. |
ouId | String | The organization ID. |
online | Boolean | Whether the cloud node is currently online. |
allowCredentialResets | Boolean | Whether credential self-help is enabled for the organization. |
credentialResetsPerMonth | Integer | The maximum number of monthly resets allowed if credential self-help is enabled. |
reportBillingPolicy | String | The report billing policy. Possible values include basic , standard , and premium . |
uri | String | The URL of the web interface for the cloud node. |
registeredDate | String | An ISO 8601 timestamp representing the time at which the cloud node was connected to the organization. |
Basic Endpoints
Create a panel
Request
POST https://accounts.pdk.io/api/ous/{{organization_id}}/panels HTTP/1.1
Authorization: Bearer {{id_token}}
Content-Type: application/json
{
"id": "1234ABC",
"name": "Test Panel"
}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
organization_id | Path | String | Yes | The organization ID. |
id_token | Header | String | Yes | A valid ID token. |
id | Body | String | Yes | The cloud node serial number. |
name | Body | String | Yes | The cloud node name. |
Response
The response contains an organization object representing the organization to which the panel was added.
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "64398c446e22d40001eeaf34",
"name": "Test Dealer",
"useBluetoothCredentials": true,
"useTouchMobileApp": true,
"allowCredentialResets": true,
"ancestors": ["544557759a01deb9874c02ef"],
"children": [
{
"id": "643f0e8f6e22d40001eeb5e6",
"name": "Test Customer",
"useBluetoothCredentials": true,
"useTouchMobileApp": true,
"allowCredentialResets": true
}
],
"panels": [
{
"id": "1234ABC",
"name": "Test Panel",
"online": true,
"allowCredentialResets": true,
"credentialResetsPerMonth": 1,
"reportBillingPolicy": "basic",
"uri": "https://panel-1234ABC.pdk.io/",
"registeredDate": "2023-05-01T14:42:36.220Z"
}
],
"readers": [
{
"_id": "032500000001773C",
"deviceId": 1,
"type": "red",
"panelId": "1234ABC"
}
],
"userPermissionLevel": "admin",
"parentPermissionLevel": "guest",
"permissions": [
{
"userId": "644a19ba6e22d40001eec732",
"_id": "644a19ba6e22d40001eec733",
"email": "john@example.com",
"name": "John Wiegand",
"role": "admin"
}
]
}
Retrieve a panel
Request
GET https://accounts.pdk.io/api/panels/{{panel_id}} HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
The response contains a panel object.
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "1234ABC",
"name": "Test Panel",
"ouId": "649d9ca6e5adcb0001f2678f",
"online": true,
"allowCredentialResets": true,
"credentialResetsPerMonth": 1,
"reportBillingPolicy": "basic",
"uri": "https://panel-1234ABC.pdk.io/",
"registeredDate": "2023-07-19T20:30:26.306Z"
}
Update a panel
Request
PUT https://accounts.pdk.io/api/panels/{{panel_id}} HTTP/1.1
Authorization: Bearer {{id_token}}
Content-Type: application/json
{
"name": "Test Panel"
}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
name | Body | String | Yes | The cloud node name. |
Response
HTTP/1.1 204 No Content
Delete a panel
Request
DELETE https://accounts.pdk.io/api/panels/{{panel_id}} HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 204 No Content
List all panels
Request
GET https://accounts.pdk.io/api/ous/{{organization_id}}/panels HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
organization_id | Path | String | Yes | The organization ID. |
id_token | Header | String | Yes | A valid ID token. |
Response
The response contains an array of panel objects.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": "1234ABC",
"name": "Test Panel",
"ouId": "649d9ca6e5adcb0001f2678f",
"online": true,
"allowCredentialResets": true,
"credentialResetsPerMonth": 1,
"reportBillingPolicy": "basic",
"uri": "https://panel-1234ABC.pdk.io/",
"registeredDate": "2023-07-19T20:30:26.306Z"
}
]
Create a panel token
Request
POST https://accounts.pdk.io/api/panels/{{panel_id}}/token HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"token": "..."
}
Search within a panel
This endpoint allows you to search for people, groups, and floor groups within a cloud node.
Request
GET https://panel-{{panel_id}}.pdk.io/api/search?q=test HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
q | Query | String | Yes | A case-insensitive search query. |
Response
The response contains an array of results.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 1,
"type": "person",
"name": "John Wiegand",
"image": "https://panel-1234ABC.pdk.io:443/images/250f7660-267a-11ee-bcc3-a3fcec96bc14"
},
{
"id": 1,
"type": "group",
"name": "Test Group"
}
]
Parameter | Type | Description |
---|---|---|
id | Integer | The ID of the entity. |
type | String | The entity type. Possible values include person , group , and floor group . |
name | String | The name of the entity. |
image | String | The url of the person's photo. This only applies if type is set to person . |
Retrieve panel info
Request
GET https://panel-{{panel_id}}.pdk.io/api/info HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"online": true,
"version": "1.17.13",
"elevatorsPresent": false,
"facilityCodesSupported": "supported"
}
Property | Type | Description |
---|---|---|
online | Boolean | Whether the cloud node is online. |
version | String | The cloud node software version number. |
elevatorsPresent | Boolean | Whether elevators are configured on the cloud node. |
facilityCodesSupported | String | Whether facility codes are supported by the cloud node. Possible values include supported , notSupported , and required . |
List all panel hardware
Request
GET https://panel-{{panel_id}}.pdk.io/api/hardware HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"type": "controller",
"unstableConnection": false,
"wirelessAddress": "",
"communicationLost": false,
"firmwareVersion": "1.1.41",
"hardwareVersion": "red1cn.d",
"serialNumber": "8003323",
"bootloaderVersion": "1.0.44",
"startupVersion": "0.3.1",
"batteryChargeCategory": "N",
"batteryLevel": 0,
"batteryTime": 0,
"batteryCurrent": 0,
"batteryHealth": "U",
"isPowerSourceOn": true,
"inputVoltage": 13984,
"inputCurrent": 62,
"peripheralPowerOn": true,
"peripheralCurrent": 92,
"peripheralVoltage": 12096,
"lowPowerModeOn": false,
"overcurrent": false,
"undervoltage": false,
"recentComlosses": [],
"connection": {
"id": 1,
"name": "Test Connection 1",
"type": "usb",
"connected": true
},
"transactions": []
},
{
"type": "controller",
"unstableConnection": false,
"wirelessAddress": "",
"communicationLost": false,
"firmwareVersion": "1.1.46",
"hardwareVersion": "red2.?",
"serialNumber": "7004385",
"bootloaderVersion": "1.0.44",
"startupVersion": "0.3.1",
"batteryChargeCategory": "N",
"batteryLevel": 0,
"batteryTime": 0,
"batteryCurrent": 0,
"batteryHealth": "U",
"isPowerSourceOn": true,
"inputVoltage": 14240,
"inputCurrent": 0,
"peripheralPowerOn": true,
"peripheralCurrent": 0,
"peripheralVoltage": 12096,
"lowPowerModeOn": false,
"overcurrent": false,
"undervoltage": false,
"recentComlosses": [],
"connection": {
"id": 2,
"name": "Test Connection 2",
"type": "ethernet",
"connected": true
},
"transactions": [],
"isLocked": false
}
]
Retrieve a panel's wireless information
Request
GET https://panel-{{panel_id}}.pdk.io/api/diagnostics/wireless HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 1,
"name": "Test Connection",
"type": "wirelessCoordinator",
"nodes": [
{
"name": "Test Device",
"shortAddress": "3ceb",
"address": "0013a200403e07c6",
"communicationLost": true,
"averageRtt": 4737,
"averageRetries": 0,
"failureRate": 1
}
],
"links": [
{
"from": "0000",
"to": "0013a200403e08c6",
"lqi": 255
}
]
}
]
Retrieve a panel's configuration
Request
GET https://panel-{{panel_id}}.pdk.io/api/config HTTP/1.1
Authorization: Bearer {{id_token}}
Parameter | Location | Type | Required | Description |
---|---|---|---|---|
panel_id | Path | String | Yes | The cloud node serial number. |
id_token | Header | String | Yes | A valid ID token. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"timezone": "US/Pacific",
"logPurgeDays": 90,
"cardFormat": {
"id": 2,
"min_input_bits": 9,
"max_input_bits": 64,
"facility_code": "NOT_ENFORCED",
"description": "Standard 26-bit Format"
},
"locale": "en",
"offlinePolicy": 1,
"killTimer": 259200
}
Update a panel's configuration
Request
PUT https://panel-{{panel_id}}.pdk.io/api/config HTTP/1.1
Authorization: Bearer {{id_token}}
Content-Type: application/json
{
"offlinePolicy": 1,
"killTimer": 259200
}
Response
HTTP/1.1 204 No Content