Cumulocity Digital Twin Manager API

Model real-world assets and their hierarchies with strongly-typed asset models, custom properties, and computed smart-function values. Asset instances reference the underlying Cumulocity managed objects so measurements and alarms automatically roll up. Supports inheritance, asset-property widgets, and bulk import via CSV.

Cumulocity Digital Twin Manager API is one of 19 APIs that Cumulocity publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include IoT, Digital Twin, Asset Modeling, and Hierarchies. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 2 Naftiko capability specs.

OpenAPI Specification

cumulocity-dtm-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cumulocity Digital Twin Manager API
  version: 2025.1
  description: |
    Model real-world assets and their hierarchies with strongly-typed asset models, custom properties,
    and computed smart-function values. Asset instances reference the underlying Cumulocity managed objects
    so measurements and alarms automatically roll up.
servers:
- url: https://{tenant}.cumulocity.com
  variables:
    tenant:
      default: example
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Asset Models
- name: Asset Instances
- name: Custom Properties
- name: Smart Functions
paths:
  /service/dtm/asset-models:
    get:
      tags: [Asset Models]
      summary: List Asset Models
      operationId: listAssetModels
      responses:
        '200':
          description: A collection of asset models.
    post:
      tags: [Asset Models]
      summary: Create an Asset Model
      operationId: createAssetModel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetModel'
      responses:
        '201':
          description: Asset model created.
  /service/dtm/asset-models/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Asset Models]
      summary: Retrieve an Asset Model
      operationId: getAssetModel
      responses:
        '200':
          description: A single asset model.
    put:
      tags: [Asset Models]
      summary: Update an Asset Model
      operationId: updateAssetModel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetModel'
      responses:
        '200':
          description: Asset model updated.
    delete:
      tags: [Asset Models]
      summary: Delete an Asset Model
      operationId: deleteAssetModel
      responses:
        '204':
          description: Asset model deleted.
  /service/dtm/asset-instances:
    get:
      tags: [Asset Instances]
      summary: List Asset Instances
      operationId: listAssetInstances
      parameters:
      - name: model
        in: query
        schema: {type: string}
      responses:
        '200':
          description: A collection of asset instances.
    post:
      tags: [Asset Instances]
      summary: Create an Asset Instance
      operationId: createAssetInstance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInstance'
      responses:
        '201':
          description: Asset instance created.
  /service/dtm/asset-instances/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Asset Instances]
      summary: Retrieve an Asset Instance
      operationId: getAssetInstance
      responses:
        '200':
          description: A single asset instance.
    put:
      tags: [Asset Instances]
      summary: Update an Asset Instance
      operationId: updateAssetInstance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInstance'
      responses:
        '200':
          description: Asset instance updated.
    delete:
      tags: [Asset Instances]
      summary: Delete an Asset Instance
      operationId: deleteAssetInstance
      responses:
        '204':
          description: Asset instance deleted.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    AssetModel:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        name: {type: string}
        description: {type: string}
        icon: {type: string}
        properties:
          type: array
          items:
            type: object
            properties:
              key: {type: string}
              label: {type: string}
              type:
                type: string
                enum: [TEXT, NUMBER, BOOLEAN, DATE, ENUM, REFERENCE]
              required: {type: boolean}
              default: {}
        allowedSubtypes:
          type: array
          items: {type: string}
        smartFunctions:
          type: array
          items:
            type: object
            properties:
              name: {type: string}
              expression: {type: string}
    AssetInstance:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        modelId: {type: string}
        name: {type: string}
        managedObjectId: {type: string}
        parent: {type: string}
        properties:
          type: object
          additionalProperties: true
        children:
          type: array
          items: {type: string}