curl --request POST \
--url https://api.draftt.io/v1/component/detailsSchema \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"technology": "rds"
}
'import requests
url = "https://api.draftt.io/v1/component/detailsSchema"
payload = { "technology": "rds" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({technology: 'rds'})
};
fetch('https://api.draftt.io/v1/component/detailsSchema', 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.draftt.io/v1/component/detailsSchema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'technology' => 'rds'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.draftt.io/v1/component/detailsSchema"
payload := strings.NewReader("{\n \"technology\": \"rds\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.draftt.io/v1/component/detailsSchema")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"technology\": \"rds\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.draftt.io/v1/component/detailsSchema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"technology\": \"rds\"\n}"
response = http.request(request)
puts response.read_body{
"resource": "component",
"key": "rds",
"technologyTypes": [
{
"key": "rds-mysql",
"displayName": "Amazon RDS MySQL"
},
{
"key": "rds-postgres",
"displayName": "Amazon RDS PostgreSQL"
}
],
"fields": [
{
"field": "details$.database$.storageEncrypted",
"displayName": "Storage Encrypted",
"type": "string",
"filterable": false,
"sortable": false
},
{
"field": "details$.database$.activeConnectionCount",
"displayName": "Active Connection Count",
"type": "number",
"description": "Number of active database connections",
"filterable": true,
"sortable": true
}
]
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}Discover the queryable details$ fields for a technology or technology group
Returns the queryable details$. fields for one technology or technology group.
These fields are per-technology and are NOT part of any schema in this document, so this endpoint is the
only source of truth for them. Call it before building a component policy or a details$. component
query, and use the returned field paths verbatim - a path that is not returned does not exist and is
rejected with a 400 when the policy is created.
The response type tells you which comparison values are valid for a field, and availableValues, when
present, enumerates the only accepted values. filterable tells you whether the field is indexed - an
un-indexed field exists on the component but cannot be filtered on in a component query.
curl --request POST \
--url https://api.draftt.io/v1/component/detailsSchema \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"technology": "rds"
}
'import requests
url = "https://api.draftt.io/v1/component/detailsSchema"
payload = { "technology": "rds" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({technology: 'rds'})
};
fetch('https://api.draftt.io/v1/component/detailsSchema', 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.draftt.io/v1/component/detailsSchema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'technology' => 'rds'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.draftt.io/v1/component/detailsSchema"
payload := strings.NewReader("{\n \"technology\": \"rds\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.draftt.io/v1/component/detailsSchema")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"technology\": \"rds\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.draftt.io/v1/component/detailsSchema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"technology\": \"rds\"\n}"
response = http.request(request)
puts response.read_body{
"resource": "component",
"key": "rds",
"technologyTypes": [
{
"key": "rds-mysql",
"displayName": "Amazon RDS MySQL"
},
{
"key": "rds-postgres",
"displayName": "Amazon RDS PostgreSQL"
}
],
"fields": [
{
"field": "details$.database$.storageEncrypted",
"displayName": "Storage Encrypted",
"type": "string",
"filterable": false,
"sortable": false
},
{
"field": "details$.database$.activeConnectionCount",
"displayName": "Active Connection Count",
"type": "number",
"description": "Number of active database connections",
"filterable": true,
"sortable": true
}
]
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
- Option 1
- Option 2
Selects which set of queryable details$. fields to return. Pass exactly one key, as either a
technology or a technology group.
Passing a technology returns its own fields unioned with the fields of the group it belongs to - so
rds includes the shared database fields. Passing a group returns only that group's fields.
Keys not listed here have no queryable detail fields and are rejected with a 404.
A specific technology, e.g. rds or aws-s3-bucket.
aws-acm-pca, aws-api-gateway-rest-api, aws-auto-scaling-group, aws-clb, aws-cloudfront-distribution, aws-dynamodb-backup, aws-ebs-snapshot, aws-ebs-volume, aws-efs-file-system, aws-elastic-ip-address-eip, aws-elb, aws-iam-group, aws-iam-role, aws-kms-key, aws-nat-gateway, aws-organizations-account, aws-organizations-organization, aws-organizations-organizational-unit-ou, aws-redshift-cluster, aws-redshift-node, aws-route-53-hosted-zone, aws-s3-bucket, aws-secrets-manager-secret, aws-security-group, aws-sqs-queue, aws-subnet, aws-vpc, aws-vpc-endpoint-gateway, aws-vpc-endpoint-interface, azure-ai-model, azure-app-service-web-app, azure-application-gateway, azure-cosmos-db, azure-cosmos-db-for-postgresql-cluster, azure-data-lake-storage-gen2, azure-databricks-workspace, azure-db, azure-db-mysql-flexible, azure-db-postgres-flexible, azure-db-sql-managed-database, azure-db-sql-managed-instance, azure-db-sql-server-on-vm, azure-dns-zone-private, azure-dns-zone-public, azure-firewall, azure-front-door, azure-function-app, azure-key-vault, azure-load-balancer, azure-log-analytics-workspace, azure-management-group, azure-monitor-action-group, azure-nat-gateway, azure-network-security-group, azure-private-endpoint, azure-public-ip-address, azure-resource-group, azure-storage-account, azure-storage-account-blob-container, azure-subscription, azure-user-assigned-managed-identity, azure-virtual-network, azure-virtual-network-subnet, azure-vm, azure-vm-managed-disk, azure-vm-scale-set, azure-waf-policy, dynamodb, ec2, ecr, ecs, elasticache, gcp-cloud-armor-policy, gcp-cloud-logging-bucket, gcp-cloud-logging-sink, gcp-gce-persistent-disk, gcp-gcs-bucket, gcp-kms-crypto-key, gcp-organization, gcp-project, gcp-secret-manager-secret, gcp-service-account, gcp-service-account-key, gcp-vpc-firewall-rule, gcp-vpc-network, gemini-enterprise, iam-access-key, k8s, lambda, rds A group shared by several technologies, e.g. database.
ai-model, container-image, container-image-digest, container-image-registry, container-image-repository, database, messaging, network, serverless-function Response
Success
component The key the fields were resolved for, echoing the request.
Every queryable detail field for the key. This is the complete set - a details$. path that is not listed does not exist and cannot be filtered on.
Show child attributes
Show child attributes
The specific technology types that belong to this technology, including both the type key and display name (e.g. rds-postgres / Amazon RDS PostgreSQL for rds). Present only when the request specifies a technology (not a technology group).
Show child attributes
Show child attributes