cumulocity-dtm-hierarchies
Expertise in managing complex asset hierarchies using the Cumulocity Digital Twin Manager (DTM) API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Expertise in managing complex asset hierarchies using the Cumulocity Digital Twin Manager (DTM) API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
REST API documentation and guidance for interacting with the Cumulocity AI service. Use when sending messages to the AI agent.
Multi-scope expert for Cumulocity IoT. Accesses live OpenAPI specs for Core API and Digital Twin Manager (DTM).
Setup the local testing environment for Cumulocity applications to test UI and microservices.
Critical implementation patterns for building Cumulocity microservices that act as MCP (Model Context Protocol) servers. Use when developing MCP servers.
Guidelines for developing microfrontends, plugins, and blueprints in Cumulocity, including manifest configuration and package structure. Use when working with microfrontends.
Guidelines for what needs to be ensured if you want to create a new open source repository in the Cumulocity organization.
| name | cumulocity-dtm-hierarchies |
| description | Expertise in managing complex asset hierarchies using the Cumulocity Digital Twin Manager (DTM) API. |
This skill covers the advanced usage of the Digital Twin Manager (DTM) API for asset management.
Before using custom properties in asset definitions, they must be defined globally.
Use POST /service/dtm/definitions/properties.
Payload Example:
{
"identifier": "Service_Contact",
"jsonSchema": {
"title": "Service Contact",
"description": "Maintenance contact email",
"type": "string",
"maxLength": 50
},
"contexts": ["asset"]
}
The DTM API is extremely strict regarding the definition payload. To avoid UI bugs, the payload should match the UI-generated structure exactly:
| Field | Description/Requirement |
|---|---|
identifier | Unique string (e.g., Wind_Turbine) |
jsonSchema | Must contain title and description |
icon | Mandatory object, e.g., {"category": "", "name": ""} |
isNoneChildAssetsAllowed | Mandatory string, e.g., "false" |
composition | Must contain allowedProperties: [] and allowedSubAssets: [...] |
Properties are added to the composition object. Each property is identified by its global identifier.
Payload Example:
{
"identifier": "Wind_Turbine",
"jsonSchema": { "title": "Wind Turbine", "description": "..." },
"composition": {
"allowedProperties": [
{ "identifier": "Manufacturer", "minOccurs": "0", "context": "asset" },
{ "identifier": "Service_Contact", "minOccurs": "0", "context": "asset" }
],
"allowedSubAssets": []
},
"icon": { "category": "", "name": "" },
"isNoneChildAssetsAllowed": "false"
}
[!CAUTION] Separation of Concerns: Do NOT include arbitrary data values (like
Manufacturer: "Siemens") in the Asset Definition payload. The definition only defines which properties are allowed via thecomposition.allowedPropertieslist. Actual values must only be applied to Asset Instances. Applying data values to definitions can cause the DTM UI to crash or exhibit erratic behavior.
POST /service/dtm/definitions/assets.GET /service/dtm/definitions/assets/{identifier} to fetch the current state.creationTime, lastUpdated, c8y_AvailableActions).composition.allowedSubAssets or jsonSchema.PUT /service/dtm/definitions/assets with the merged payload.Use POST /service/dtm/assets with the header X-Upsert-Mode: true.
{"type": "Wind_Turbine", "Manufacturer": "Siemens Gamesa", "name": "Turbine #001"}c8y_ExternalId as the unique identifier.c8y_IsDeviceGroup or c8y_IsAsset in the DTM request body; these are handled internally or reserved.POST /service/dtm/assets/{parentId}/subAssets/{instanceId}. This links instances into the hierarchy.POST /service/dtm/assets/{assetId}/linkedSeries.
application/json.LinkedSeries objects.source object (fragment, series, type) to ensure validation passes.[
{
"fragment": "c8y_PowerMeasurement",
"series": "power",
"label": "Main Power",
"source": {
"id": "12345",
"fragment": "c8y_PowerMeasurement",
"series": "power",
"type": "c8y_PowerMeasurement"
}
}
]
To ensure DTM assets are visible in the standard Device Management or Inventory views, link the physical device as a childAsset of the DTM instance using the standard Inventory API:
POST /inventory/managedObjects/{dtm_id}/childAssets