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