Skip to main content
Version: 1.0

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"
}
PropertyTypeDescription
idStringThe cloud node serial number.
nameStringThe cloud node name.
ouIdStringThe organization ID.
onlineBooleanWhether the cloud node is currently online.
allowCredentialResetsBooleanWhether credential self-help is enabled for the organization.
credentialResetsPerMonthIntegerThe maximum number of monthly resets allowed if credential self-help is enabled.
reportBillingPolicyStringThe report billing policy. Possible values include basic, standard, and premium.
uriStringThe URL of the web interface for the cloud node.
registeredDateStringAn 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"
}
ParameterLocationTypeRequiredDescription
organization_idPathStringYesThe organization ID.
id_tokenHeaderStringYesA valid ID token.
idBodyStringYesThe cloud node serial number.
nameBodyStringYesThe 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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"
}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA valid ID token.
nameBodyStringYesThe 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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}}
ParameterLocationTypeRequiredDescription
organization_idPathStringYesThe organization ID.
id_tokenHeaderStringYesA 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA valid ID token.
qQueryStringYesA 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"
}
]
ParameterTypeDescription
idIntegerThe ID of the entity.
typeStringThe entity type. Possible values include person, group, and floor group.
nameStringThe name of the entity.
imageStringThe 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA valid ID token.

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
"online": true,
"version": "1.17.13",
"elevatorsPresent": false,
"facilityCodesSupported": "supported"
}
PropertyTypeDescription
onlineBooleanWhether the cloud node is online.
versionStringThe cloud node software version number.
elevatorsPresentBooleanWhether elevators are configured on the cloud node.
facilityCodesSupportedStringWhether 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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}}
ParameterLocationTypeRequiredDescription
panel_idPathStringYesThe cloud node serial number.
id_tokenHeaderStringYesA 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