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

FieldTypeRequiredDescription
idstringautoPrefixed ID: tast-{ulid}
namestringyesDisplay name (e.g. “GitHub Enterprise”)
typeenumyessaas | internal | infrastructure | device
categorystringnoGrouping label (e.g. “DevTools”, “HR”)
vendorstringnoVendor or provider name
urlstringnoPrimary URL for the service
ownerIdstringnoid of the owning Person
statusenumautoactive | deprecated | deleted
tagsstring[]noFree-form tags
createdAtstringautoISO 8601 UTC
updatedAtstringautoISO 8601 UTC

AccessEntitlement Schema

FieldTypeRequiredDescription
idstringautoPrefixed ID: ent-{ulid}
assetIdstringyesParent TechnologyAsset ID
namestringyesEntitlement name (e.g. “Admin”, “Read-only”)
descriptionstringnoWhat this entitlement grants
riskLevelenumnolow | medium | high | critical
createdAtstringautoISO 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'.