API Documentation

CERTIFY Snap Thermal Reading Reporting API

version 1.0

Overview

The CERTIFY Snap Thermal Reading Reporting API delivers real-time data from CERTIFY.me platform to customers, enabling applications like analytics, reporting tools and custom software.

The thermal data is gathered from the SNAP device sent to CERTIFY.me servers, and is also sent to your server based on your configuration in the portal.

This feature is disabled on all accounts by default. Only enable it if you wish to use thermal data for third-party solutions or your own custom software. 

Configuration

To configure the Reporting API Webhook, Navigate to Settings > Webhook to enable and configure the Reporting API.

You must set the following attributes:

Server Location (Call Back URL)

Where you would like the data to be forwarded. Must be accessible from the internet.
Must support TLS 1.1

HMAC Key

This is the secret used to generate a SHA256 HMAC signature, over the payload (the JSON message). In header we will send – hashed message as HMAC it includes UID (unique Id) + HMAC 256 Key (Secret). At the receiver end, one needs to validate against UID, secret and the message received. The signature is then added to a custom HTTP header (“HMAC”) in the POST message

Status

Enable or Disable the Reporting API

Data Format

The data sent consists of the following elements:

Datamember

Description

memberId

Member ID of the Individual if available

accessId

Access ID of the Individual if available

firstName

First Name if available

lastName

Last Name if available

temperature

Value of the temperature in Centigrade or Fahrenheit

temperatureFormat

C – Centigrade or F – Fahrenheit

exceedThreshold

true – above set threshold
false – below set threshold

temperatureRecordTime

UTC DateTime of the thermal report in
ISO8601 Format Extended universal date/time format (yyyy-MM-ddTHH:mm:ssZ)

deviceTime

Extended local date/time format (yyyy-MM-ddTHH:mm:ss)

sourceIP

Source IP of the thermal report – IP of the internet connected to the device

uid

Unique ID from thermal report

qrCodeId

QR Code Value / Bar Code Value which was used prior to the scan

trqStatus

0 – Pass (All the questions in the questionnaire are answered “No”)

1 – Failed (1 or more questions in the questionnaire is answered “Yes”)

trigger

Start of the workflow
FACE, CAMERA, ACCESSID, QRCODE

maskStatus

1- Mask Preset
0 – No Mask
-2 – Unknown

faceScore

Similarity Score of the Face Identification between 80 to 100

facilityName

Name of the facility associate with the device.

locationName

Name of the location associated with the device

deviceParameters: temperatureCompensationValue

Work flow specific values from the device
Ex: Temperature compensation value

deviceData

Device related data.

The data is sent via a HTTP POST message to the server. No data is queued to be sent, so if the server specified in the configuration is down or otherwise unreachable, the HTTP POST will fail and cause the data to be lost. The portal will not provide any notification of such failure.

Sample Data:

{
  "memberId": "11972417103010",
  "accessId": "03899",
  "firstName": "John",
  "lastName": "Doe",
  "temperature": "97.7",
  "temperatureFormat": "F",
  "exceedThreshold": false,
  "temperatureRecordTime": "2020-07-07T02:20:38Z",
  "deviceTime": "2020-07-06T22:20:40",
  "deviceId": "A040980P02888254",
  "deviceName": "Front Lobby",
  "sourceIP": "100.36.111.34",
  "uid": "6e7cc4b4cc574e19b823593407415bf3",
  "qrCodeId": "9270d59d96db48648316f60ddebdbd2c",
  "trqStatus": null,
  "trigger": "FACE",
  "maskStatus": 0,
  "faceScore": 91,
  "facilityName": "Rockville Office",
  "locationName": "Lobby",
  "deviceParameters": "temperatureCompensationValue:0.0",
  "deviceData": {
    "osVersion": "Android - 7.1.2",
    "appVersion": "v3.2.94",
    "mobileIp": "192.168.87.20",
    "mobileNumber": "+1",
    "uniqueDeviceId": "e1b60cf4d2bce1e3",
    "IMEINumber": "",
    "deviceModel": "XT980P",
    "deviceSN": "A040980P02800254",
    "batteryStatus": "100",
    "networkStatus": "true",
    "sourceIP": null
  }
}

Note for PHP users

PHP will not handle raw JSON POST data when processed using the $_POST
variable. To be able to access raw JSON data, you may have to use
“php://input” instead. Here is a sample script that shows you how:-

<?php 
// The code below uses php://input instead of $_POST as 
//  the data we are processing is not html form based post,
//  but rather raw json that $_POST does not process.
$postdata = file_get_contents("php://input") . "\n\n";
print_r($postdata);
file_put_contents('mydata.txt', serialize($postdata), FILE_APPEND | LOCK_EX); 
?>

Sample Project:

You can download a .NET Sample Project from GitHub
https://github.com/certify-global/snapwebhook