Device REST API

Endpoint Description Method Frequency
{ServerIPOrDomainName}/api/action/GetSettingPiBySerial?serial={serial} Device will call this endpoint to synchronize the configuration data between server and device POST Hourly
{ServerIPOrDomainName}/api/action/HeartbeatLite?serial={serial} Device will call this API to send a ping to the server to indicate that it's still able to contact

 

Topic Description Frequency
healthchecklog Device will send health check payload to this topic for near real time health check monitoring Every 5 seconds
ffc-eventrawdata Device will send counting data payload to this topic whenever detected moving object Event triggered

Data payload that device will push to server websocket topic

ProWave Data Retrieval API

Authentication

Endpoint: v1/auth/

  • Method: POST

  • Description: Authenticates the user and returns a token

  • Headers:

    • Content-Type: application/json

  • Request Body:

{
    "username": "string",
    "password": "string"
}

  • Response:

    • Success: 200 OK

    • Failure: 401 Unauthorized

{
"token": "string"
}

Sensor Data Retrieval

Endpoint: v1/data/occupancyraw

  • Method: GET

  • Description: Get occupancy data, i.e. total number of people in the tracking zone

  • Headers:

    • Content-Type: application/json

    • Authorization: "TokenString"

  • Response:

    • Success: 200 OK

Occupancy Data:

{

"RoiId": 1,
"CombineObjectTypeId": 1,
"ObjectCount": 5, #Number of people in tracking zone
"Timestamp": 1672889540, #UTCtime
"LocalTime": "2024-01-05 11:32:20",
"UTCTime": "2024-01-05 03:32:20",
"OccupancyTypeId": 1,
"ObjectCountUnit": 1

}

    • Failure: 401 Unauthorized

Endpoint: v1/data/eventraw

  • Method: GET

  • Description: Get raw data for various footfall events, including In, Out, Heat Dwell,
    Serve Time, Wait Time, etc.

  • Headers:

    • Content-Type: application/json

    • Authorization: "TokenString"

  • Params:
Parameter Description Value Sample
Date Start Start date of the data yyyymmdd date_start=20241001
Date End End date of the data yyyymmdd date_end=20241002
Time Start Start time of the data HHMMSS time_start=090000
Time End End time of the data HHMMSS time_end=180000
  • Response:

    • Success: 200 OK

{

"RoiId": 1, #Unique for each ROI defined
"MetricId": 3, #3 for Heat Dwell
"PeopleTypeId": 1,
"CombineObjectTypeId": 11,
"PeopleId": 1,
"EventEndLocalTime": "2024-11-25 04:47:59",
"EventEndTime": 1672889550,
"EventEndUTCTime": "2024-11-25 04:47:59",
"EventStartLocalTime": "2024-11-25 04:47:49",
"EventStartTime": 1672889540,
"EventStartUTCTime": "2024-11-25 04:47:49"

}

    • Failure: 401 Unauthorized

Endpoint: v1/prowave/data/heatmap

  • Method: GET

  • Description: Get 15min aggregated heatmap data

  • Headers:

    • Content-Type: application/json

    • Authorization: "TokenString"

  • Params:
Parameter Description Sample
Start Timestamp Start date of the data starttime=1732508403
End Timestamp End date of the data endtime=1732513804

*Heatmap data from the last 15min will be returned if no param is specified.

  • Response:

    • Success: 200 OK

{

"data": [ #multiple JSON objects will be returned
based on the start and end time range

{

"AggregationInterval": 900, #in seconds
"CombineObjectTypeId": 1,
"Data": [

{

"PasserBy": [],
"PeopleOccHeat": 0,
"PixelOccHeat": 0,
"x": 9, #in pixel
"y": 22 #in pixel

},
{

...

},
...

],
"FloorPlanId": 276,
"HeatmapHeight": 50, #in pixel
"HeatmapTypeId": 2, #for FFC data pipeline use
"HeatmapWidth": 50, #in pixel
"LocalTime": "2024-11-26 17:15:00",
"RoiId": 1,
"Timestamp": 1732612500,
"UTCTime": "2024-11-26 09:15:00"

},
...

],
"status": "ok"

}

*Note: ProWave heatmap is segmented into a 50 x 50 pixels matrix,
representing a 100m² coverage area.

    • PixelOccHeat is the EFFECTIVE duration a pixel get occupied, i.e. if there are >2 people in the same pixel as the same time, only consider once

    • PeopleOccHeat is the TOTAL duration a pixel get occupied, i.e. if there are >2 people in the same pixel at the same time, it is sum of all people

  • Failure: 401 Unauthorized

  • Not Found 404 : No heatmap data found for the specified time range

Endpoint: v1/prowave/data/pointcloud

  • Method: GET

  • Description: Get aggregated point cloud data in per frame resolution

  • Headers:

    • Content-Type: application/json

    • Authorization: "TokenString"

  • Params:
Parameter Description Sample
Start Timestamp Start date of the data starttime=1732508403
End Timestamp End date of the data endtime=1732513804
  • Response:

    • Success: 200 OK

{

"data": [ #multiple JSON objects will be returned based on the start and end time range

{

"timestamp": "2024-11-23 15:30:00",
"frame_id": 102,
"azimuth": [

-0.14999999105930328,
-0.14000000059604645,
-0.14000000059604645

],
"elevation": [

-1.0,
-0.9599999785423279,
-0.9300000071525574

],
"range": [

1.6967500448226929,
1.6967500448226929,
1.6967500448226929

],
"doppler": [

-0.05628000199794769,
0.7887600064277649,
-0.28168001770973206

],
"snr": [

5.639999866485596,
10.0,
45.36000061035156

],
"tid": [

0,
1

],
"posX": [

-0.912135660648346,
-0.24295669794082642

],
"posY": [

1.9702520370483398,
1.8161014318466187

],
"posZ": [

-1.8553844690322876,
0.503157377243042

]

},
...

],

"frame_rate": 5,
"status": "ok"

}

*Note: Individual points in the point cloud data are provided in polar coordinates formats, represented as the distance and angles relative to the sensor, along with the doppler (velocity of the point) and the snr (signal-to-noise ratio) of the reflected signal. "tid" field indicates the number of tracked objects in the current frame, and "posX", "posY" and "posZ" indicate the spatial location of the tracked object's centroid point in 3D space.

    • Failure: 401 Unauthorized

    • Not Found 404 : No point cloud data found for the specified time range

Updated on November 29, 2024