Skip to content

Listing Data Types

Query and retrieve data types with pagination and sorting.


Endpoint

GET /api/datatypes

Retrieves all data types (both built-in and custom) with optional filtering, sorting, and pagination.


Authentication

Requires any valid API Key. All keys have read access.


Query Parameters

Parameter Type Default Description
sortBy string "name asc" Sort specification (e.g., "name asc", "type desc")
skip integer 0 Number of records to skip (for pagination)
take integer All Number of records to return

Response

Returns a paginated list of data types:

Response Format
{
  "items": [
    {
      "id": "uuid",
      "type": "US_SSN",
      "name": "US SSN",
      "description": "US Social Security Number (9 digits)",
      "disabled": false,
      "isGroupDataType": false,
      "isBuiltIn": true,
      "regexes": [
        {
          "regex": "\\b\\d{3}-\\d{2}-\\d{4}\\b",
          "json": "",
          "html": "",
          "valueGroupIndex": 0
        }
      ],
      "createdAt": 1704067200,
      "updatedAt": 1704067200
    }
  ],
  "count": 25
}

Response Fields

Field Type Description
type string Type identifier (unique identifier for this data type)
name string Display name
description string Description
disabled boolean Whether type is disabled
isGroupDataType boolean Whether this is a group type
internal integer Internal type indicator (non-zero for built-in types)
regexes array Regex patterns (only for regex types)
dataTypes array Member type identifiers (only for group types)
obfuscations array Associated obfuscation configurations
createdAt integer Unix timestamp when created
updatedAt integer Unix timestamp of last update

Examples

List All Data Types

Retrieve all data types sorted by name.

curl -X GET "https://your-shield-host:8080/api/datatypes?sortBy=name%20asc" \
  -H "Authorization: Bearer YOUR_API_KEY" | jq '.items[] | {type, name, disabled}'
import requests

BASE_URL = "https://your-shield-host:8080"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(
    f"{BASE_URL}/api/datatypes",
    headers=HEADERS,
    params={"sortBy": "name asc"}
)

for dt in response.json()["items"]:
    status = "disabled" if dt["disabled"] else "enabled"
    built_in = "built-in" if dt["isBuiltIn"] else "custom"
    print(f"{dt['name']}: {dt['type']} ({status}, {built_in})")
const axios = require('axios');

const BASE_URL = 'https://your-shield-host:8080';
const HEADERS = { 'Authorization': 'Bearer YOUR_API_KEY' };

const response = await axios.get(`${BASE_URL}/api/datatypes`, {
  headers: HEADERS,
  params: { sortBy: 'name asc' }
});

response.data.items.forEach(dt => {
  const status = dt.disabled ? 'disabled' : 'enabled';
  const builtIn = dt.isBuiltIn ? 'built-in' : 'custom';
  console.log(`${dt.name}: ${dt.type} (${status}, ${builtIn})`);
});
Paginated Results

Retrieve data types with pagination (50 per page).

curl -X GET "https://your-shield-host:8080/api/datatypes?skip=0&take=50" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

BASE_URL = "https://your-shield-host:8080"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

page = 0
page_size = 50

response = requests.get(
    f"{BASE_URL}/api/datatypes",
    headers=HEADERS,
    params={"skip": page * page_size, "take": page_size}
)

datatypes = response.json()
print(f"Page {page + 1}: {len(datatypes['items'])} of {datatypes['count']} total")
const axios = require('axios');

const BASE_URL = 'https://your-shield-host:8080';
const HEADERS = { 'Authorization': 'Bearer YOUR_API_KEY' };

const page = 0;
const pageSize = 50;

const response = await axios.get(`${BASE_URL}/api/datatypes`, {
  headers: HEADERS,
  params: { skip: page * pageSize, take: pageSize }
});

console.log(`Page ${page + 1}: ${response.data.items.length} of ${response.data.count} total`);
Filter Custom Data Types Only

Retrieve and filter only custom (non-built-in) data types.

import requests

BASE_URL = "https://your-shield-host:8080"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(f"{BASE_URL}/api/datatypes", headers=HEADERS)

# Filter custom types client-side
custom_types = [dt for dt in response.json()["items"] if not dt["isBuiltIn"]]

print(f"Custom data types: {len(custom_types)}")
for dt in custom_types:
    print(f"  - {dt['name']} ({dt['type']})")
const axios = require('axios');

const BASE_URL = 'https://your-shield-host:8080';
const HEADERS = { 'Authorization': 'Bearer YOUR_API_KEY' };

const response = await axios.get(`${BASE_URL}/api/datatypes`, { headers: HEADERS });

// Filter custom types client-side
const customTypes = response.data.items.filter(dt => !dt.isBuiltIn);

console.log(`Custom data types: ${customTypes.length}`);
customTypes.forEach(dt => {
  console.log(`  - ${dt.name} (${dt.type})`);
});