Read analytics field metadata
curl --request GET \
--url https://apiweb.mile.app/api/v3/analytics/field-metadata \
--header 'Authorization: Bearer <token>'import requests
url = "https://apiweb.mile.app/api/v3/analytics/field-metadata"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://apiweb.mile.app/api/v3/analytics/field-metadata', 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://apiweb.mile.app/api/v3/analytics/field-metadata",
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://apiweb.mile.app/api/v3/analytics/field-metadata"
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://apiweb.mile.app/api/v3/analytics/field-metadata")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v3/analytics/field-metadata")
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{
"status": true,
"data": {
"dataSource": "task",
"indices": [
"simpletask.2026"
],
"verified": true,
"fields": [
{
"name": "status",
"label": "field.task.status",
"optionData": [
"UNASSIGNED",
"ONGOING",
"DONE"
],
"isArray": false,
"unit": null,
"capability": {
"filterable": true,
"groupable": true,
"metricable": false,
"distinctCountable": true,
"timeFieldEligible": false,
"sortable": true
},
"valuePicker": "list",
"valuePickerField": null,
"cardinality": "low",
"fanOut": false,
"availability": {
"available": true,
"blockedReason": null
},
"quality": {
"level": "ok",
"fillRate": null,
"zeroRate": null,
"measuredAt": null,
"sampleSize": null,
"note": null
},
"storage": {
"esType": "keyword",
"storedAs": [
"keyword"
],
"status": "confirmed"
}
},
{
"name": "travelDuration",
"label": "field.task.travelDuration",
"optionData": null,
"isArray": false,
"unit": "duration",
"capability": {
"filterable": true,
"groupable": false,
"metricable": true,
"distinctCountable": true,
"timeFieldEligible": false,
"sortable": true
},
"valuePicker": "none",
"valuePickerField": null,
"cardinality": "high",
"fanOut": false,
"availability": {
"available": true,
"blockedReason": null
},
"quality": {
"level": "unverified",
"fillRate": null,
"zeroRate": null,
"measuredAt": null,
"sampleSize": null,
"note": "field_quality.unverified"
},
"storage": {
"esType": "float",
"storedAs": [
"float"
],
"status": "confirmed"
}
}
]
}
}{
"status": false,
"message": "Unauthenticated.",
"failedCode": "auth-034"
}{
"status": false,
"message": "Access denied. You do not have permission for view dashboard. Please contact your admin to request access.",
"failedCode": "sys-035"
}{
"status": false,
"message": "Query parameter 'dataSource' is required.",
"error": {
"code": "data_source_missing",
"message": "Query parameter 'dataSource' is required.",
"field": "dataSource"
}
}Dashboard
Read analytics field metadata
Retrieves the catalog fields of one data source, each compared with what the search index actually stores (storage.status). If the index cannot be reached, the call still succeeds with verified: false.
GET
/
analytics
/
field-metadata
Read analytics field metadata
curl --request GET \
--url https://apiweb.mile.app/api/v3/analytics/field-metadata \
--header 'Authorization: Bearer <token>'import requests
url = "https://apiweb.mile.app/api/v3/analytics/field-metadata"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://apiweb.mile.app/api/v3/analytics/field-metadata', 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://apiweb.mile.app/api/v3/analytics/field-metadata",
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://apiweb.mile.app/api/v3/analytics/field-metadata"
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://apiweb.mile.app/api/v3/analytics/field-metadata")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v3/analytics/field-metadata")
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{
"status": true,
"data": {
"dataSource": "task",
"indices": [
"simpletask.2026"
],
"verified": true,
"fields": [
{
"name": "status",
"label": "field.task.status",
"optionData": [
"UNASSIGNED",
"ONGOING",
"DONE"
],
"isArray": false,
"unit": null,
"capability": {
"filterable": true,
"groupable": true,
"metricable": false,
"distinctCountable": true,
"timeFieldEligible": false,
"sortable": true
},
"valuePicker": "list",
"valuePickerField": null,
"cardinality": "low",
"fanOut": false,
"availability": {
"available": true,
"blockedReason": null
},
"quality": {
"level": "ok",
"fillRate": null,
"zeroRate": null,
"measuredAt": null,
"sampleSize": null,
"note": null
},
"storage": {
"esType": "keyword",
"storedAs": [
"keyword"
],
"status": "confirmed"
}
},
{
"name": "travelDuration",
"label": "field.task.travelDuration",
"optionData": null,
"isArray": false,
"unit": "duration",
"capability": {
"filterable": true,
"groupable": false,
"metricable": true,
"distinctCountable": true,
"timeFieldEligible": false,
"sortable": true
},
"valuePicker": "none",
"valuePickerField": null,
"cardinality": "high",
"fanOut": false,
"availability": {
"available": true,
"blockedReason": null
},
"quality": {
"level": "unverified",
"fillRate": null,
"zeroRate": null,
"measuredAt": null,
"sampleSize": null,
"note": "field_quality.unverified"
},
"storage": {
"esType": "float",
"storedAs": [
"float"
],
"status": "confirmed"
}
}
]
}
}{
"status": false,
"message": "Unauthenticated.",
"failedCode": "auth-034"
}{
"status": false,
"message": "Access denied. You do not have permission for view dashboard. Please contact your admin to request access.",
"failedCode": "sys-035"
}{
"status": false,
"message": "Query parameter 'dataSource' is required.",
"error": {
"code": "data_source_missing",
"message": "Query parameter 'dataSource' is required.",
"field": "dataSource"
}
}