x-cpod-domain: licenses
Licenses
Software licenses owned and how they're assigned.
Try in explorer
client.licensesSoftwareLicense
A software license your org holds.
REST path
/api/v1/licensesOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.licenses.licenses.list()
// create:
await client.licenses.licenses.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| asset_id | uuid | UUID of the TechnologyAsset this license covers. Null when the license is tracked independently of a registered asset. |
| vendor | string | Name of the software vendor or publisher. |
| product_name | string | Full commercial name of the licensed software product. |
| product_sku | string | Vendor-assigned SKU or part number for this license product. |
| license_type | string | License model. 'concurrent' allows a pool of simultaneous users. 'named_user' is tied to specific individuals. 'site' covers an entire organization or location. |
| total_seats | number | Total number of licensed seats purchased. Null for unlimited or site-wide licenses. |
| used_seats | number | Number of seats currently assigned via active LicenseAssignment records. Computed by the platform. |
| available_seats | number | Number of seats available for assignment (totalSeats - usedSeats). Null when totalSeats is null. |
| cost | json | Financial cost information for this license. |
| purchase_date | date-time | Date the license was originally purchased or the subscription began. |
| expiry_date | date-time | Date the license expires. Null for open-source or licenses with no expiry. |
| renewal_date | date-time | Date on which this license is due for renewal. May differ from expiryDate due to renewal processing windows. |
| auto_renew | boolean | Whether this license is configured for automatic renewal with the vendor. |
| supplier_id | uuid | UUID of the vendor or supplier entity (if managed in cPod). Null when the vendor is tracked only by name. |
| contract_reference | string | Purchase order number, contract number, or procurement reference for this license agreement. |
| status | string | Current lifecycle status. 'expiring_soon' is set automatically when the renewal date is within 90 days. |
| compliance_status | string | License compliance posture. 'over_allocated' means usedSeats exceeds totalSeats. 'under_utilized' means utilization is below a configured threshold. |
| tags | json | Array of tag strings for grouping and filtering. |
| list_price | number | Vendor list price per seat or billing cycle before any discount is applied. |
| negotiated_discount | number | Percentage discount negotiated off the vendor list price (0–100). |
| cost_center_id | uuid | UUID of the CostCenter that funds this license. |
| contract_id | uuid | UUID of the Contract that governs this license agreement. |
LicenseAssignment
A seat assignment of a SoftwareLicense to a Person or Group.
REST path
/api/v1/licenses/assignmentsOperations
listgetcreaterevokeSDK
// list — returns only your records; add filters/search:
await client.licenses.assignments.list()
// create:
await client.licenses.assignments.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| license_id | uuid | UUID of the SoftwareLicense from which this seat is assigned. |
| assignee_id | uuid | UUID of the Person or Group to whom this license seat is assigned. The type is determined by assigneeType. |
| assignee_type | string | Discriminator indicating whether assigneeId refers to a Person or a Group. |
| asset_id | uuid | UUID of the TechnologyAsset for which this license is being used, if different from or more specific than the license's top-level assetId. Allows tracking which |
| assigned_at | date-time | ISO 8601 timestamp when this license seat was assigned. |
| assigned_by_id | uuid | UUID of the Person who performed or approved this assignment. |
| expires_at | date-time | ISO 8601 timestamp when this assignment is scheduled to expire. Null for indefinite assignments. |
| status | string | Current lifecycle status of this assignment. |
| last_used_at | date-time | ISO 8601 timestamp when the assigned seat was last actively used by the assignee. Null if usage has never been recorded. |