Datasources
Describe Datasource
Describe one datasource the way the report builder sees it: its data views (with the advanced keys each view requires), its default view and defaults, and its metric and dimension catalogs carrying the flags that decide what can be combined (single — must be the only dimension; requires_metric — only offered once that metric is picked; deprecated; custom). A metric or dimension is only valid inside its own data_view. Pass data_view to scope the response to one view.
GET
/
v1
/
datasources
/
{datasource_id}
/
describe
Describe Datasource
curl --request GET \
--url https://api.oviond.com/v1/datasources/{datasource_id}/describe \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.oviond.com/v1/datasources/{datasource_id}/describe"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.oviond.com/v1/datasources/{datasource_id}/describe', 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.oviond.com/v1/datasources/{datasource_id}/describe",
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://api.oviond.com/v1/datasources/{datasource_id}/describe"
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://api.oviond.com/v1/datasources/{datasource_id}/describe")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oviond.com/v1/datasources/{datasource_id}/describe")
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{
"success": true,
"data": "<unknown>",
"meta": "<unknown>"
}{
"error": "<string>"
}Authorizations
ApiKeyAuthBearerAuth
Oviond API key (prefix oviond_) sent as a Bearer token — the credential for REST/programmatic and headless integrations. Manage keys in Settings → API Keys. API keys do NOT authenticate the MCP endpoint (/mcp), which uses OAuth 2.1 + PKCE.
Path Parameters
Available options:
advanced-web-ranking, ac, adroll, ahrefs, basecamp, brightlocal, call-rail, drip, keywords, sendin-blue, sendgrid, moosend, mailer-lite, pingdom, uptime-robot, piwik-pro, wordpress, pabbly-connect, ment, twilio, switchy, vimeo, pinterest, pinterest-ads, gtres, paypal, gps, gs, CUSTOM_IMPORT, CUSTOM_DATA, CALCULATION, GOALS, str, wistia, ca-mon, convertkit, woocommerce, xero, matomo, go-high-level, wcs, bing-webmaster-tools, pipedrive, salesforce, tiktok, tiktok-ads, twr, twr-ads, spf, ytbe, google-local-services-ads, klaviyo, gsh, ga4, lkdin-ads, lkdin-pg, mlchmp, inst-ads, inst, fb-ads, fb-pg, gmb, serpstat, hubspot, gadw, sem-rush, se-ranking, microsoft-ads, plausible, snapchat-ads, microsoft-clarity, serp-watch, vbout, moz, chatgpt-ads, omnisend, airtable, nozzle, surnex, jira, clickup, make, freshdesk, chart-mogul, amplitude, harvest, zoho-crm, clockify, adtraction, shopify, copper, help-scout-docs, close-crm, simplesat, help-scout-mailbox Example:
"gadw"
Query Parameters
Example:
"ACCOUNT"
⌘I
Describe Datasource
curl --request GET \
--url https://api.oviond.com/v1/datasources/{datasource_id}/describe \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.oviond.com/v1/datasources/{datasource_id}/describe"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.oviond.com/v1/datasources/{datasource_id}/describe', 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.oviond.com/v1/datasources/{datasource_id}/describe",
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://api.oviond.com/v1/datasources/{datasource_id}/describe"
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://api.oviond.com/v1/datasources/{datasource_id}/describe")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oviond.com/v1/datasources/{datasource_id}/describe")
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{
"success": true,
"data": "<unknown>",
"meta": "<unknown>"
}{
"error": "<string>"
}