Virtual tags
List virtual tag suggestions
Suggestions an agent has proposed, grouped by the reason it proposed them. Each carries the clause it would add and the resource counts behind it. Defaults to the pending ones; pass status to see answered ones.
GET
/
api
/
v1
/
tenant
/
virtual-tag-suggestions
List virtual tag suggestions
curl --request GET \
--url https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions \
--header 'Authorization: <api-key>' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>'import requests
url = "https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions"
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>', Authorization: '<api-key>'}
};
fetch('https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions', 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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions",
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: <api-key>",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
req.Header.Add("Authorization", "<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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": [
{
"created_at": "<string>",
"id": "<string>",
"keys": [
"<string>"
],
"kind": "<string>",
"progress": {
"applied": 123,
"ignored": 123,
"pending": 123,
"total": 123
},
"rationale": "<string>",
"resolved": true,
"suggestions": [
{
"applied_rule_id": "<string>",
"created_at": "<string>",
"expression": "<string>",
"field": "<string>",
"group_id": "<string>",
"id": "<string>",
"key": "<string>",
"match_value": "<string>",
"matched_before": 123,
"matched_if_applied": 123,
"matched_now": 123,
"operator": "<string>",
"rationale": "<string>",
"resolved_at": "<string>",
"status": "<string>",
"subject_fingerprint": "<string>",
"tag_value": "<string>",
"tenant_id": "<string>",
"updated_at": "<string>",
"window_days": 123
}
],
"title": "<string>"
}
]
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}Authorizations
Enter "Bearer {token}"
Headers
Tenant ID
Query Parameters
Filter by status; blank means all
Available options:
pending, applied, ignored Was this page helpful?
⌘I
List virtual tag suggestions
curl --request GET \
--url https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions \
--header 'Authorization: <api-key>' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>'import requests
url = "https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions"
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>', Authorization: '<api-key>'}
};
fetch('https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions', 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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions",
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: <api-key>",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
req.Header.Add("Authorization", "<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.costgraph.ai/api/v1/tenant/virtual-tag-suggestions")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/virtual-tag-suggestions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": [
{
"created_at": "<string>",
"id": "<string>",
"keys": [
"<string>"
],
"kind": "<string>",
"progress": {
"applied": 123,
"ignored": 123,
"pending": 123,
"total": 123
},
"rationale": "<string>",
"resolved": true,
"suggestions": [
{
"applied_rule_id": "<string>",
"created_at": "<string>",
"expression": "<string>",
"field": "<string>",
"group_id": "<string>",
"id": "<string>",
"key": "<string>",
"match_value": "<string>",
"matched_before": 123,
"matched_if_applied": 123,
"matched_now": 123,
"operator": "<string>",
"rationale": "<string>",
"resolved_at": "<string>",
"status": "<string>",
"subject_fingerprint": "<string>",
"tag_value": "<string>",
"tenant_id": "<string>",
"updated_at": "<string>",
"window_days": 123
}
],
"title": "<string>"
}
]
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}