IT Glue Flexible Assets Management
Overview
Flexible Assets in IT Glue provide customizable, structured documentation templates. Unlike free-form documents, flexible assets have defined fields and types, enabling consistent documentation across organizations and powerful filtering/searching capabilities.
Key Concepts
Flexible Asset Types
Flexible Asset Types define the schema for a category of documentation:
Flexible Asset Type: Network Overview
├── Fields:
│ ├── Primary ISP (Text)
│ ├── Backup ISP (Text)
│ ├── Public IP Addresses (Textarea)
│ ├── Firewall (Tag - Configuration)
│ ├── Network Diagram (Upload)
│ └── DNS Provider (Select)
Field Types
| Type | Description | Use Case | |------|-------------|----------| | Text | Single line text | Names, identifiers | | Textarea | Multi-line text | Descriptions, notes | | Number | Numeric value | Quantities, counts | | Date | Date picker | Expiration dates | | Checkbox | Boolean true/false | Flags, toggles | | Select | Dropdown selection | Predefined options | | Tag | Link to IT Glue resource | Configurations, contacts | | Password | Password field | Embedded credentials | | Upload | File attachment | Diagrams, documents | | Percent | Percentage value | Utilization, progress | | Header | Section header | Visual organization |
Tag Fields
Tag fields create relationships to other IT Glue resources:
| Tag Type | Links To | |----------|----------| | Configuration | Configuration items | | Contact | Contacts | | Password | Passwords | | Document | Documents | | Flexible Asset | Other flexible assets | | Location | Locations |
Field Reference
Flexible Asset Type Fields
| Field | Type | Description | |-------|------|-------------| | id | integer | Type identifier | | name | string | Type name | | description | string | Type description | | icon | string | Display icon | | enabled | boolean | Type enabled status |
Flexible Asset Fields
| Field | Type | Description | |-------|------|-------------| | id | integer | Asset instance identifier | | organization-id | integer | Parent organization | | flexible-asset-type-id | integer | Type definition | | name | string | Auto-generated from name field | | traits | object | Field values |
Traits (Field Values)
{
"traits": {
"primary-isp": "Comcast Business",
"backup-isp": "Verizon FiOS",
"public-ip-addresses": "203.0.113.10\n203.0.113.11",
"firewall": {
"type": "Tag",
"values": [{"id": 12345, "type": "Configuration"}]
},
"dns-provider": "Cloudflare"
}
}
Critical: Discover Type IDs First
Flexible asset type IDs are instance-specific — every IT Glue account has different IDs. Never guess or hardcode type IDs. Always call list_flexible_asset_types first to discover what types exist, then use the returned IDs with search_flexible_assets.
Step 1: list_flexible_asset_types → get type IDs
Step 2: search_flexible_assets(flexible_asset_type_id=<id from step 1>)
API Patterns
List Flexible Asset Types
GET /flexible-asset-types
x-api-key: YOUR_API_KEY
Content-Type: application/vnd.api+json
Get Flexible Asset Type Details
GET /flexible-asset-types/123
x-api-key: YOUR_API_KEY
With Field Definitions:
GET /flexible-asset-types/123?include=flexible-asset-fields
List Flexible Assets
GET /flexible-assets
x-api-key: YOUR_API_KEY
By Organization:
GET /organizations/456/relationships/flexible-assets
By Type:
GET /flexible-assets?filter[flexible-asset-type-id]=123
By Organization and Type:
GET /flexible-assets?filter[organization-id]=456&filter[flexible-asset-type-id]=123
Get Single Flexible Asset
GET /flexible-assets/789
x-api-key: YOUR_API_KEY
With Includes:
GET /flexible-assets/789?include=organization,flexible-asset-type
Create Flexible Asset
POST /flexible-assets
Content-Type: application/vnd.api+json
x-api-key: YOUR_API_KEY
{
"data": {
"type": "flexible-assets",
"attributes": {
"organization-id": 456,
"flexible-asset-type-id": 123,
"traits": {
"name": "Acme Corp Network Overview",
"primary-isp": "Comcast Business",
"backup-isp": "Verizon FiOS",
"public-ip-addresses": "203.0.113.10\n203.0.113.11",
"dns-provider": "Cloudflare"
}
}
}
}
Create with Tag Fields
{
"data": {
"type": "flexible-assets",
"attributes": {
"organization-id": 456,
"flexible-asset-type-id": 123,
"traits": {
"name": "Main Office Network",
"firewall": [12345],
"core-switch": [67890],
"network-admin": [11111]
}
}
}
}
Update Flexible Asset
PATCH /flexible-assets/789
Content-Type: application/vnd.api+json
x-api-key: YOUR_API_KEY
{
"data": {
"type": "flexible-assets",
"attributes": {
"traits": {
"backup-isp": "AT&T Business",
"last-reviewed": "2024-02-15"
}
}
}
}
Delete Flexible Asset
DELETE /flexible-assets/789
x-api-key: YOUR_API_KEY
Common Flexible Asset Types
Network Overview
Fields:
├── Name (Text) - Required, Name field
├── Primary ISP (Text)
├── Backup ISP (Text)
├── Public IP Addresses (Textarea)
├── Internal IP Scheme (Textarea)
├── Firewall (Tag - Configuration)
├── Core Switch (Tag - Configuration)
├── Network Diagram (Upload)
├── DNS Provider (Select)
└── Last Reviewed (Date)
Application Documentation
Fields:
├── Name (Text) - Required, Name field
├── Description (Textarea)
├── Version (Text)
├── Vendor (Text)
├── Support Contact (Tag - Contact)
├── Primary Server (Tag - Configuration)
├── Database Server (Tag - Configuration)
├── Admin URL (Text)
├── Admin Credentials (Password)
├── License Key (Password)
├── License Expiration (Date)
├── Documentation URL (Text)
└── Notes (Textarea)
Backup Overview
Fields:
├── Name (Text) - Required, Name field
├── Backup Solution (Select)
├── Backup Server (Tag - Configuration)
├── Retention Policy (Textarea)
├── Backup Schedule (Textarea)
├── Data Protected (Textarea)
├── Recovery Time Objective (Text)
├── Recovery Point Objective (Text)
├── Last Test Date (Date)
├── Backup Admin Credentials (Password)
└── Notes (Textarea)
Microsoft 365 Tenant
Fields:
├── Name (Text) - Required, Name field
├── Tenant ID (Text)
├── Primary Domain (Text)
├── Additional Domains (Textarea)
├── License Summary (Textarea)
├── Admin Portal URL (Text)
├── Global Admin (Tag - Contact)
├── Admin Credentials (Password)
├── MFA Status (Select)
├── Conditional Access (Checkbox)
└── Notes (Textarea)
Common Workflows
Create Flexible Asset from Template
async function createFlexibleAssetFromType(orgId, typeId, fieldValues) {
// Get the type definition to understand fields
const assetType = await getFlexibleAssetType(typeId, {
include: 'flexible-asset-fields'
});
// Validate required fields
const requiredFields = assetType.included?.filter(
f => f.attributes.required
) || [];
for (const field of requiredFields) {
const fieldKey = field.attributes['name-key'];
if (!fieldValues[fieldKey]) {
throw new Error(`Required field missing: ${field.attributes.name}`);
}
}
// Create the flexible asset
return await createFlexibleAsset({
'organization-id': orgId,
'flexible-asset-type-id': typeId,
traits: fieldValues
});
}
Find Flexible Assets by Type
async function findFlexibleAssetsByType(orgId, typeName) {
// First, find the type by name
const types = await fetchFlexibleAssetTypes();
const type = types.find(t =>
t.attributes.name.toLowerCase() === typeName.toLowerCase()
);
if (!type) {
throw new Error(`Flexible asset type not f