List newer reports
curl --request GET \
--url https://api.hellotracks.com/v1/reports/catalog \
--header 'API-Key: <api-key>'import requests
url = "https://api.hellotracks.com/v1/reports/catalog"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://api.hellotracks.com/v1/reports/catalog', 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://api.hellotracks.com/v1/reports/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$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://api.hellotracks.com/v1/reports/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hellotracks.com/v1/reports/catalog")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hellotracks.com/v1/reports/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"reports": [
{
"id": "timesheet",
"title": "Timesheet",
"question": "How long did everyone work?",
"views": [
{
"id": "perPerson",
"title": "Per person"
},
{
"id": "entries",
"title": "Entries"
}
],
"scopes": [
"people"
],
"formats": [
"xlsx",
"pdf",
"csv",
"json"
],
"defaultFormat": "xlsx",
"defaultPeriod": "lastWeek",
"periods": [
"today",
"yesterday",
"thisWeek",
"lastWeek",
"thisMonth",
"lastMonth",
"last7Days",
"last30Days"
],
"maxDays": 120,
"replacesClassic": [
"timesheet"
],
"csvIgnoresView": false,
"filters": [],
"columns": true
}
]
},
"error": null,
"meta": {
"path": "/v1/reports/catalog",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "invalid_api_key",
"message": "Invalid Hellotracks API key."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "forbidden",
"message": "No permission."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "throttled",
"message": "Too many requests."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "internal_error",
"message": "Hellotracks API is temporarily unavailable."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}Reports
List newer reports
Lists the newer reports the company’s plan includes, with their views, formats, periods, limits and filters, in the company’s language. Admins, operators and the company key may call it; workers get 403 permission_denied. jobs, form-answers and visit-report need a Dispatch plan (403 on a Location plan). Same envelope; errors here use the codes invalid_request (400), permission_denied (403) and internal_error (500).
GET
/
reports
/
catalog
List newer reports
curl --request GET \
--url https://api.hellotracks.com/v1/reports/catalog \
--header 'API-Key: <api-key>'import requests
url = "https://api.hellotracks.com/v1/reports/catalog"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://api.hellotracks.com/v1/reports/catalog', 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://api.hellotracks.com/v1/reports/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$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://api.hellotracks.com/v1/reports/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hellotracks.com/v1/reports/catalog")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hellotracks.com/v1/reports/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"reports": [
{
"id": "timesheet",
"title": "Timesheet",
"question": "How long did everyone work?",
"views": [
{
"id": "perPerson",
"title": "Per person"
},
{
"id": "entries",
"title": "Entries"
}
],
"scopes": [
"people"
],
"formats": [
"xlsx",
"pdf",
"csv",
"json"
],
"defaultFormat": "xlsx",
"defaultPeriod": "lastWeek",
"periods": [
"today",
"yesterday",
"thisWeek",
"lastWeek",
"thisMonth",
"lastMonth",
"last7Days",
"last30Days"
],
"maxDays": 120,
"replacesClassic": [
"timesheet"
],
"csvIgnoresView": false,
"filters": [],
"columns": true
}
]
},
"error": null,
"meta": {
"path": "/v1/reports/catalog",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "invalid_api_key",
"message": "Invalid Hellotracks API key."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "forbidden",
"message": "No permission."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "throttled",
"message": "Too many requests."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}{
"data": null,
"error": {
"code": "internal_error",
"message": "Hellotracks API is temporarily unavailable."
},
"meta": {
"path": "/jobs",
"method": "GET"
}
}