Admin dashboard: live KPIs, punch-source split, 14-day
curl --request GET \
--url https://app.ontime.hosai.app/api/dashboard \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.ontime.hosai.app/api/dashboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.ontime.hosai.app/api/dashboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.ontime.hosai.app/api/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.ontime.hosai.app/api/dashboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.ontime.hosai.app/api/dashboard")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.ontime.hosai.app/api/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"date": "<string>",
"kpis": {
"expected": 0,
"punchedIn": 0,
"onTime": 0,
"late": 0,
"yetToPunch": 0,
"noShow": 0,
"onLeave": 0,
"otHoursToday": 123
},
"byLocation": [
{
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"present": 0,
"expected": 0
}
],
"sources": [
{
"count": 0
}
],
"kyc": {
"incompleteCount": 0,
"totalActive": 0,
"rows": [
{
"employeeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"code": "<string>",
"missing": [
"<string>"
]
}
]
},
"trend": [
{
"date": "<string>",
"present": 0,
"late": 0
}
],
"alerts": [
{
"id": "<string>",
"title": "<string>",
"detail": "<string>",
"count": 0,
"to": "<string>"
}
],
"headcount": {
"total": 0,
"active": 0,
"onboarding": 0,
"exited": 0
}
}Dashboard
Admin dashboard: live KPIs, punch-source split, 14-day
Admin dashboard: live KPIs, punch-source split, 14-day trend, KYC, alerts, headcount
GET
/
api
/
dashboard
Admin dashboard: live KPIs, punch-source split, 14-day
curl --request GET \
--url https://app.ontime.hosai.app/api/dashboard \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.ontime.hosai.app/api/dashboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.ontime.hosai.app/api/dashboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.ontime.hosai.app/api/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.ontime.hosai.app/api/dashboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.ontime.hosai.app/api/dashboard")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.ontime.hosai.app/api/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"date": "<string>",
"kpis": {
"expected": 0,
"punchedIn": 0,
"onTime": 0,
"late": 0,
"yetToPunch": 0,
"noShow": 0,
"onLeave": 0,
"otHoursToday": 123
},
"byLocation": [
{
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"present": 0,
"expected": 0
}
],
"sources": [
{
"count": 0
}
],
"kyc": {
"incompleteCount": 0,
"totalActive": 0,
"rows": [
{
"employeeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"code": "<string>",
"missing": [
"<string>"
]
}
]
},
"trend": [
{
"date": "<string>",
"present": 0,
"late": 0
}
],
"alerts": [
{
"id": "<string>",
"title": "<string>",
"detail": "<string>",
"count": 0,
"to": "<string>"
}
],
"headcount": {
"total": 0,
"active": 0,
"onboarding": 0,
"exited": 0
}
}Authorizations
Issue keys in Settings → API. Send them as Authorization: Bearer ont_… (an X-Api-Key: ont_… header is also accepted). Session-cookie routes are used by the OnTime web apps and are shown for completeness.
Query Parameters
Response
200 - application/json
Success
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I