Technology
The Technology domain tracks two related entity types: TechnologyAsset (an application, platform, or tool) and AccessEntitlement (a role or permission level within that asset). Together they model who has access to what.
TechnologyAsset Schema
| Field | Type | Required | Description |
|---|---|---|---|
id | string | auto | Prefixed ID: tast-{ulid} |
name | string | yes | Display name (e.g. “GitHub Enterprise”) |
type | enum | yes | saas | internal | infrastructure | device |
category | string | no | Grouping label (e.g. “DevTools”, “HR”) |
vendor | string | no | Vendor or provider name |
url | string | no | Primary URL for the service |
ownerId | string | no | id of the owning Person |
status | enum | auto | active | deprecated | deleted |
tags | string[] | no | Free-form tags |
createdAt | string | auto | ISO 8601 UTC |
updatedAt | string | auto | ISO 8601 UTC |
AccessEntitlement Schema
| Field | Type | Required | Description |
|---|---|---|---|
id | string | auto | Prefixed ID: ent-{ulid} |
assetId | string | yes | Parent TechnologyAsset ID |
name | string | yes | Entitlement name (e.g. “Admin”, “Read-only”) |
description | string | no | What this entitlement grants |
riskLevel | enum | no | low | medium | high | critical |
createdAt | string | auto | ISO 8601 UTC |
List & Get Assets
import { CpodClient } from '@cpod/sdk'
const sdk = CpodClient.fromEnv()
const result = await sdk.technology.list({ type: 'saas', limit: 50 })
for (const asset of result.items) {
console.log(asset.id, asset.name, asset.vendor)
}
const asset = await sdk.technology.get('tast-abc123')
// Expand entitlements in one call
const full = await sdk.technology.get('tast-abc123', { expand: ['entitlements'] })
// full.entitlements → AccessEntitlement[]Create & Update an Asset
const asset = await sdk.technology.create({
name: 'GitHub Enterprise',
type: 'saas',
category: 'DevTools',
vendor: 'GitHub',
url: 'https://github.com/acme-corp',
ownerId: 'per-abc123',
})
await sdk.technology.update('tast-abc123', { status: 'deprecated' })
await sdk.technology.delete('tast-abc123')Manage Access Entitlements
// Create an entitlement on an asset
const entitlement = await sdk.technology.entitlements.create('tast-abc123', {
name: 'Admin',
description: 'Full administrative access including billing.',
riskLevel: 'critical',
})
// List entitlements for an asset
const entitlements = await sdk.technology.entitlements.list('tast-abc123')
// Get a single entitlement
const ent = await sdk.technology.entitlements.get('ent-xyz789')
// Update
await sdk.technology.entitlements.update('ent-xyz789', { riskLevel: 'high' })
// Delete
await sdk.technology.entitlements.delete('ent-xyz789')To query which people hold a given entitlement, use the Relationships domain with fromType: 'person' and toId: 'ent-xyz789'.